2013-04-12 91 views
6

或者PHP不允许这样做?我已经读过它可以使用PUT,但服务器仅期望POST。是否可以使用cURL来上传使用POST文件?

+0

我相信[pecl_http](http://pecl.php.net/package/pecl_http)能够在2.x分支中做到这一点。 –

+1

重复的http://stackoverflow.com/questions/3085990/post-a-file-string-using-curl-in-php – bwoebi

+0

服务器需要接受这与内容类型application/octet-stream。 – rosc0

回答

1

是的,它有可能流上传一个文件使用POST文件上传与cURL。这是默认设置,您需要提供想要以字符串形式流式传输的文件的文件名。

// 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; 

除此之外默认方法,它是可以使用卷曲到流上传使用POST方法的文件。

5

卷曲已经支持流,尝试curl --help | grep binary你会得到:

“--data-二进制数据HTTP POST二进制数据(H)”

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

相关问题