可以说我有一个很大的文件,我想通过PHP和curl将HTTP POST发送到webservice。该文件大于我可以让PHP使用的内存量。如何通过流式传输文件使用PHP,curl和HTTP POST上传文件?
基本上我正在寻找一种方法来直接流动文件的内容来卷曲,而无需将整个文件读入内存。
我已经成功地使用了多部分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头,但没有运气。
它与多,虽然,但我需要一个原始POST请求,没有multipart内容:
$post['file'] = "@large.jpg";
curl_setopt($c, CURLOPT_POSTFIELDS, $post);
在这种情况下你可能最好的一个自定义的fsockopen块。它只需要一个POST头部blob,以及fread/fwrite的简单循环。 – mario 2011-03-10 14:32:26
任何原因你不能只是SCP文件? PECL有一个ssh库.. – 2011-03-10 14:33:40