p>PHP uses CURL to upload files. Just send a POST request. Set a field in the request to the full path of the file to be uploaded, starting with "@", and then use CURL to POST the variable. method is sent to the server, and the corresponding uploaded file information can be obtained from the super global variable $_FILES on the server side.
<br>
Below we use an example to show this process.
<br>
Assume that there is a local text file log.txt, its path is "/www/test/log.txt", and the content is as follows:
this is a file for test hello PythonTab!
For Upload this file to the server-side script http://www.pythontab.com/upload.php. We wrote a local script named curl_file.php with the following content:
<php? //要上传的本地文件地址 "upload" = > "@/www/test/log.txt" ); $ch = curl_init(); curl_setopt($ch , CURLOPT_URL , $url); curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch , CURLOPT_POST, 1); curl_setopt($ch , CURLOPT_POSTFIELDS, $post_data); $output = curl_exec($ch); curl_close($ch); echo $output; ?>
curl_file.php The logic is very simple, set the POST variable $post_data, where upload points to the file that needs to be sent. It should be noted here that when we used POST before, we sent a string, and then used file_get_contents("php//input") on the server side to obtain the string. This is different from the usage here. In fact, POST can also be like GET. Send key-value pairs. There is a super global variable $_POST on the server side that can obtain the value of the corresponding POST data just like $_GET. It should be noted that the variable for uploading files does not exist in $_POST, but in $_FILES.
In order to show the logic of the server receiving the file upload request from the above code, we wrote the following code in upload.php:
<br>
upload. PHP first uses var_export to output the $_FILES variable to the standard output, then uses file_get_contents to read the contents of the file pointed to by $_FILES['upload']['tmp_name'], and outputs it to the standard output, and then puts $_FILES['upload' The file pointed to by ]['tmp_name'] is copied to the log_copy.txt file in the current directory. The standard output of the script is as follows:
array( 'upload' => array( 'name' => 'log.txt', 'type' => 'application/octet-stream', 'tmp_name' => '/tmp/phpLUB59F', 'error' => 0, 'size' => 36, ) ) this is a file for test hello PythonTab!
You can see that there is an upload array in the $_FILES variable, which corresponds to the uploaded file description information, where name and type represent the name and type respectively. tmp_name is more critical. After the server receives the uploaded file, it will write the file in a temporary file. The name of this temporary file is the value of tmp_name. This is why we can get the file contents of a log.txt by reading the file. . Generally, after the server receives the uploaded file, it needs to read the file immediately or copy the file to another file, because the temporary file pointed to by tmp_name will be deleted after the server script is executed. The upload.php script The last line is to copy the temporary file to our target file.
<br>