curl - 上传文件

  • 作者:KK

  • 发表日期:2017.7.9


要点速读

  1. PHP5.5以前和以后的上传文件处理方式都不一样

  2. 主要通过设置POST数据为一个数组,数组的key就是文件的报文参数名称,数组的值就是文件路径或CURLFile文件对象


PHP5.5或以上

$url = 'http://localhost/upload.php'; //接收上传文件的地址
$postData = [
  'up-file' => new CURLFile('@D:/test.txt') //重点1
];
$curlHandler = curl_init();
curl_setopt($curlHandler, CURLOPT_URL, $url);
curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, 1);


curl_setopt($curlHandler, CURLOPT_POST, 1); //用POST方法请求
curl_setopt($curlHandler, CURLOPT_POSTFIELDS, $postData); //重点2

$result = curl_exec($curlHandler);
curl_close($curlHandler);
echo $result;

其中CURLFile是PHP5.5以后curl模块附加的一个类

接收端测试:

print_r($_FILES['up-file']);

PHP5.5以下

$url = 'http://localhost/upload.php'; //接收上传文件的地址
$postData = array(
  'up-file' => '@D:/test.txt' //重点1,路径前要加@符号
);
$curlHandler = curl_init();
curl_setopt($curlHandler, CURLOPT_URL, $url);
curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, 1);


curl_setopt($curlHandler, CURLOPT_POST, 1); //用POST方法请求
curl_setopt($curlHandler, CURLOPT_POSTFIELDS, $postData); //重点2

$result = curl_exec($curlHandler);
curl_close($curlHandler);
echo $result;

注意上传文件路径的字符串要以@符号开始