Home >Backend Development >PHP Tutorial >curl command simulates form upload file

curl command simulates form upload file

WBOY
WBOYOriginal
2016-07-25 08:51:211381browse
  1. //Initialization

  2. $ch = curl_init();

  3. //The local file address to be uploaded"@F:/xampp /php/php.ini" when uploading, there must be an @ symbol in front of the upload path

  4. $furl = "@F:/xampp/php/php.ini";
  5. $post_data = array (
  6. "upload" => $furl
  7. );

  8. //Where does CURLOPT_URL refer to submission? Equivalent to the path specified by "action" in the form

  9. $url = "http://localhost/test/curl/curl_post.php";

  10. //Set variables

  11. curl_setopt($ch , CURLOPT_URL, $url);
  12. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);//Whether the execution result is returned, 0 is returned, 1 is not returned
  13. curl_setopt($ch, CURLOPT_HEADER, 0);//Parameter settings, Whether to display the header information, 1 means display, 0 means not display

  14. //Fake web page source address, fake form submission from Baidu

  15. curl_setopt($ch, CURLOPT_REFERER, "http:// www.baidu.com");

  16. //Form data, the regular form setting value is non-0

  17. curl_setopt($ch, CURLOPT_POST, 1);

  18. < ;p>curl_setopt($ch, CURLOPT_TIMEOUT, 1);//Set the maximum curl execution timeout

  19. //When using an array to provide post data, the CURL component is probably for compatibility with @filename This way of writing uploaded files,

  20. //default content_type is set to multipart/form-data. Although it has no impact on most web servers, there are still a small number of servers that are incompatible. The conclusion drawn by this article is that when there is no need to upload files, try to http_build_query the data submitted by the post and then send it out, which can achieve better compatibility and smaller request data packets.
  21. curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

  22. //Execute and get the results

  23. $output = curl_exec($ch);
  24. if($outopt === FALSE)
  25. {
  26. echo "
    ","cUrl Error:".curl_error($ch);
  27. }
  28. // Release the cURL handle
  29. curl_close($ch);
  30. ?>

Copy code
File 2: curl_post.php

    echo "
    ";
  1. var_dump($_FILES);
  2. ?>
Copy the code
The results are as follows:

    array(1) {
  1. ["upload"]=>
  2. array(5) {
  3. ["name"]=>
  4. string(7) "php.ini"
  5. ["type" ]=>
  6. string(24) "application/octet-stream"
  7. ["tmp_name"]=>
  8. string(24) "F:xampptmpphpB2D1.tmp"
  9. ["error"]=>
  10. int(0 )
  11. ["size"]=>
  12. int(46217)
  13. }
  14. }
Copy code
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn