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