PHP curl 流式方式上传和下载大文件

一、流式方式下载大文件

$ch = curl_init();

$fp =  fopen('./download.zip''w+');

curl_setopt($ch, CURLOPT_URL,$url);

curl_setopt($ch, CURLOPT_FILE, $fp);

curl_exec ($ch);

curl_close ($ch);

fclose($fp);

 

二、 流式方式上传大文件

$post_data = array(
      "params" => "values",
      //要上传的本地文件地址
      "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;
服务端接收到数据后,通过:
$_FILES['upload']['tmp_name'] 获取文件;
如果是要打开文件流式上传:
$curl = curl_init();
curl_setopt( $curl, CURLOPT_PUT, 1 );
curl_setopt( $curl, CURLOPT_INFILESIZE, filesize($tmpFile) );
curl_setopt( $curl, CURLOPT_INFILE, ($in=fopen($tmpFile, 'r')) );
curl_setopt( $curl, CURLOPT_CUSTOMREQUEST, 'POST' );
curl_setopt( $curl, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json' ] );
curl_setopt( $curl, CURLOPT_URL, $url );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
$result = curl_exec($curl);
curl_close($curl);
fclose($in);

这里,$tmpFile是包含请求主体的文件的完整路径.

注意:即使设置了CURLOPT_PUT,重要的部分是将CURLOPT_CUSTOMREQUEST设置为’POST’.

You May Also Like

About the Author: daidai5771

发表评论

电子邮件地址不会被公开。 必填项已用*标注