假设我有一个大文件,我想使用PHP和curl将其HTTP POST到一个webservice。这个文件比我可以让PHP使用的内存还要大。
基本上,我正在寻找一种直接将文件内容流式传输到curl的方法,而不是将整个文件读入内存。
我已经成功地使用了multipart POST和PUT,但没有使用POST上传“二进制数据”。
我想在PHP中实现的是这个命令行所做的事情:
$ curl -X POST -H "Content-Type: image/jpeg" \
--data-binary "@large.jpg" "http://example.com/myservice"
我尝试了很多curl_setopt选项,比如INFILE、POSTFIELDS、Content-Type头部,但都没有成功。
虽然使用multipart可以工作,但我需要一个原始的POST请求,而不是multiparts:
$post['file'] = "@large.jpg";
curl_setopt($c, CURLOPT_POSTFIELDS, $post);