一、流式方式下载大文件
$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’.