是否可以使用 cURL 使用 POST 流式上传文件?

问题描述 投票:0回答:3

或者 PHP 不允许这样做?我读过可以使用 PUT,但服务器只需要 POST。

php curl
3个回答
7
投票

cURL 已经支持流了,尝试一下

curl --help | grep binary
你会得到:

--data-binary DATA HTTP POST 二进制数据 (H)

一个例子:

curl -v -XPOST http://example:port/path --data-binary @file.tar
-H“内容类型:应用程序/八位字节流”


3
投票

是的,可以使用带有 cURL 的 POST 文件上传来“流式上传”文件。这是默认设置,您需要提供要以字符串形式流式传输的文件的文件名。 // URL on which we have to post data $url = "http://localhost/tutorials/post_action.php"; // Any other field you might want to catch $post_data['name'] = "khan"; // File you want to upload/post $post_data['file'] = "@c:/logs.log"; // Initialize cURL $ch = curl_init(); // Set URL on which you want to post the Form and/or data curl_setopt($ch, CURLOPT_URL, $url); // Data+Files to be posted curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); // Pass TRUE or 1 if you want to wait for and catch the response against the request made curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // For Debug mode; shows up any error encountered during the operation curl_setopt($ch, CURLOPT_VERBOSE, 1); // Execute the request $response = curl_exec($ch); // Just for debug: to see response echo $response;

除了默认方法之外,
不可能

使用 cURL 通过 POST 方法流式上传文件。


0
投票

curl --location --request POST 'http://localhost:8080/hello/read' \ -H "Content-Type: application/octet-stream" \ --data-binary '@/Users/krishna/Documents/demo.bin'

上传文本文件的命令

curl --location --request POST 'http://localhost:8080/hello/read' \ --header 'Content-Type: text/plain' \ --data-binary '@/Users/krishna/Documents/demo.txt'

根据文件内容设置
Content-Type

    

© www.soinside.com 2019 - 2024. All rights reserved.