使用Put Http方法上传文件

时间:2014-01-27 04:49:41

标签: php http file-upload put

我想将文件上传到远程服务器。为此我已经读过我们可以使用put方法上传文件。

将为用户提供一个表格,他们可以上传一个或两个文件。 该文件应该上传到其他服务器。

我使用http put上传文件的代码如下:

$curl = curl_init($api_url);
$data = array(
  'filename' => 'filename.html',   
  );
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
// Make the REST call, returning the result
$response = curl_exec($curl);
if (!$response) {
    die("Connection Failure.n");
}

发送了put请求,但文件未按要求上传。文件名作为数据。 filename.html文件也位于Web服务器的根位置。如何上传文件?

2 个答案:

答案 0 :(得分:0)

  1. 好像你没有发送文件的内容。
  2. 作为上传接受您的请求完全取决于服务器。询问服务器管理员如何上传文件或阅读服务器的API文档(如果提供)。

答案 1 :(得分:0)

如果您使用的是 PHP,则可以使用以下代码:

#Initiate cURL object
$curl = curl_init();
#Set your URL
curl_setopt($curl, CURLOPT_URL, 'https://local.simbiat.ru');
#Indicate, that you plan to upload a file
curl_setopt($curl, CURLOPT_UPLOAD, true);
#Indicate your protocol
curl_setopt($curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS);
#Set flags for transfer
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1);
#Disable header (optional)
curl_setopt($curl, CURLOPT_HEADER, false);
#Set HTTP method to PUT
curl_setopt($curl, CURLOPT_PUT, 1);
#Indicate the file you want to upload
curl_setopt($curl, CURLOPT_INFILE, fopen('path_to_file', 'rb'));
#Indicate the size of the file (it does not look like this is mandatory, though)
curl_setopt($curl, CURLOPT_INFILESIZE, filesize('path_to_file'));
#Only use below option on TEST environment if you have a self-signed certificate!!! On production this can cause security issues
#curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
#Execute
curl_exec($curl);