PUT上传php curl命令响应为“Missing Content-Length header”。

时间:2017-02-16 11:01:33

标签: php rest curl upload put

我编写了一个php脚本来上传媒体文件但是当我使用它时会发生响应:

  

缺少Content-Length标题。

php代码是:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://raz-ul.domenka.com/v1/AUTH_8a619275-f933-4da1-b289-0ca1a2a3a4a5/bcd/drop1.avi");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");

$headers = array();
$headers[] = "X-Auth-Token: AUTH_tkd78bedda5bec4613b80becb1b2b3b4b5";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);

$header_size  = $info['header_size'];
$header       = substr($response, 0, $header_size);

var_dump($header);

另一方面,当我在cli中做类似的事情时,我成功了:

kinduser@43915-1-c1c2c3-01:~/public_html/adam$ curl -i -X PUT -H "X-Auth-Token: AUTH_tkd78bedda5bec4613b80bec0123456789" -T drop.avi https://raz-ul.domenka.com/v1/AUTH_8a619275-f933-4da1-b289-0ca1a2a3a4a5/bcd/drop.avi
HTTP/1.1 100 Continue

HTTP/1.1 201 Created
Last-Modified: Thu, 16 Feb 2017 10:12:54 GMT
Content-Length: 0
Etag: fa60ba1b78299bfae5ac61d1d2d3d4d5
Content-Type: text/html; charset=UTF-8
X-Trans-Id: tx114b22027223415c850db-e1e2e3e4e5
Date: Thu, 16 Feb 2017 10:12:53 GMT

kinduser@43915-1-c1c2c3-01:~/public_html/adam$

但我想在php中这样做。如何修复我的PHP代码?

更新 我添加了一些代码来告诉curl要发送哪个文件。它发送了文件但文件在服务器上发生了变化。它的重量从660kB增加到660.31kB。下载到我的电脑后,无法通过视频播放器打开。

现在这段代码就像这样:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://raz-ul.domenka.com/v1/AUTH_8a619275-f933-4da1-b289-0ca1a2a3a4a5/bcd/drop7.avi");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");

$headers = array();
$headers[] = "X-Auth-Token: AUTH_tkd78bedda5bec4613b80becb1b2b3b4b5";

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$curlFile = curl_file_create ('./drop.avi');

$post = array (
    'extra_info' => '123456',
    'file_contents' => $curlFile
);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $post);


$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);

$header_size  = $info['header_size'];
$header       = substr($response, 0, $header_size);

var_dump($header);

知道怎么解决吗?

0 个答案:

没有答案