我正在尝试使用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);
的正确方法是什么?
答案 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类。
请记住:文件名必须是绝对路径。