簡體   English   中英

什么是PHP中的cURL -T選項

[英]What is the cURL -T option in PHP

我正在嘗試使用CDN將cli -T選項轉換為PHP代碼發布到文件服務中,但是我真的不知道等效項是什么,或者將復制它的相應代碼是什么。 我已經在CURLOPT_HTTPHEADER周圍看到了一個選項,但這似乎與其他標頭不兼容。

我要復制的確切內容是:

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設置為false(盡管5.5默認情況下為false

curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);

另一種選擇是使用CURLFile類。

請記住:文件名必須是絕對路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM