PHP中的cURL-T选项是什么


What is the cURL -T option in PHP

我正试图用CDN将cli-T选项翻译成PHP代码发布到文件服务,但我真的不知道等效的是什么,也不知道复制它的相应代码是什么。

我正试图复制的东西是:

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

我想是这样的,但我不确定:

    $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);

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

因此,确切的问题是:

在PHP中复制cURL CLI -T "test.png"的正确方法是什么?

考虑到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类。

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