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

时间:2013-04-12 10:27:05

标签: php curl

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

2 个答案:

答案 0 :(得分:4)

Curl已经支持该流,请尝试curl --help | grep binary,您将获得:

" - 数据二进制数据HTTP HTTP POST二进制数据(H)"

一个例子: curl -v -XPOST http://example:port/path --data-binary @file.tar \ -H "Content-Type: application/octet-stream"

答案 1 :(得分:2)

是的,可以使用带有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方法流上传文件。