如何通过流式传输文件,用PHP、curl和HTTPPOST上传文件?
假设我有一个大文件,我想使用PHP和curl通过HTTP发布到Web服务。该文件大于我可以让PHP使用的内存量 基本上,我正在寻找一种方法,将文件内容直接流式传输到curl,而无需将整个文件读入内存 我成功地使用了多部分POST和PUT,但没有使用POST上传“二进制数据” 我想在PHP中实现的是此命令行的功能:如何通过流式传输文件,用PHP、curl和HTTPPOST上传文件?,php,file,curl,upload,stream,Php,File,Curl,Upload,Stream,假设我有一个大文件,我想使用PHP和curl通过HTTP发布到Web服务。该文件大于我可以让PHP使用的内存量 基本上,我正在寻找一种方法,将文件内容直接流式传输到curl,而无需将整个文件读入内存 我成功地使用了多部分POST和PUT,但没有使用POST上传“二进制数据” 我想在PHP中实现的是此命令行的功能: $ curl -X POST -H "Content-Type: image/jpeg" \ --data-binary "@large.jpg" "http://ex
$ curl -X POST -H "Content-Type: image/jpeg" \
--data-binary "@large.jpg" "http://example.com/myservice"
使用curl_setopt尝试了很多选项,例如infle、POSTFIELDS、Content-Type头,但没有成功
虽然它可以使用多部分,但我需要一个原始POST请求,没有多部分:
$post['file'] = "@large.jpg";
curl_setopt($c, CURLOPT_POSTFIELDS, $post);
PHP/CURL绑定支持CURLOPT_READFUNCTION选项,该选项允许您使用该回调传递数据以逐块发送 与此C示例中显示的逻辑几乎完全相同:
在这种情况下,您最好使用自定义fsockopen块。它只需要一个POST头blob和一个用于fread/fwrite的简单循环?PECL有一个ssh库..看起来很有前途,我将尝试一下。谢谢