什么是PHP中的cURL -T选项

时间:2016-01-05 22:28:24

标签: php curl

我正在尝试使用CDN将cli -T选项转换为PHP代码发布到文件服务,但我真的不知道等效的是什么,或者是什么是复制它的相应代码。我已经看到了围绕CURLOPT_HTTPHEADER的选项,但这似乎与其他标题不对应。

我想要复制的确切内容是:

'2999-12-31 23:59:59.000'

我认为这是这样的,但我不确定:

curl -XPUT -T "test.png" -v -H "X-Auth-Token:MYTOKEN" -H"Content-Type: text/plain" "https://somecdn.com"

我想,我很惊讶-T标志没有类似的curl_setopt。

所以准确的问题是:

在PHP中复制cURL CLI $ch = curl_init(); // Set up the options curl_setopt($ch, CURLOPT_URL, "https://mycdn.com/test.txt"); curl_setopt($ch, CURLOPT_HTTPHEADER, array( "X-Auth-Token: mytoken", "Content-type: text/plain" ) ); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, array("file" => "@test.txt") ); curl_setopt($ch, CURLINFO_HEADER_OUT, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $response = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); 的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

考虑到PHP 5.5上传文件这种方式(@filename)已被弃用 此外,PHP 5.5引入了一个关于上传过程的新选项/标记,由CURLOPT_SAFE_UPLOAD调用:

  

TRUE 以禁用对上传文件的@前缀的支持    CURLOPT_POSTFIELDS ,表示以@开头的值可以   安全地传递为字段。 CURLFile可能会用于上传   在PHP 5.5.0中添加了 FALSE 作为默认值。 PHP 5.6.0更改   默认值为TRUE。

因此,如果您使用PHP 5.5+,则必须将 CURLOPT_SAFE_UPLOAD (默认情况下5.5为false)设置为false

curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);

另一种选择是使用CURLFile类。

请记住:文件名必须是绝对路径。