2016-02-12 60 views
1

我正在實現與API的集成,並根據文檔中的示例,我需要使用​​發佈文件。如何在PHP中使用curl -T/- upload-file和POST?

curl -u "username:password" -0 –X POST -T filename.txt -H "Content-Type: text/plain" "http://url" 

我的解決辦法:

$fp = fopen('/home/myFile.txt', 'rb'); 
curl_setopt($ch, CURLOPT_INFILE, $fp); 
curl_setopt($ch, CURLOPT_INFILESIZE, filesize('/home/myFile.txt')); 

的問題但是是使用PUT時,而例如使用POST是CURLOPT_INLINE纔有效。

我見過以下解決方案,但我不認爲這就是我應該使用的,因爲它看起來與-T不一樣。我沒有在文檔中看到任何關鍵名稱的提及。

curl_setopt($c, CURLOPT_POST, true); 
curl_setopt($c, CURLOPT_POSTFIELDS, array('file'=>'@/home/myFile.pdf')); 

有沒有辦法正確地做到這一點?

回答

0

如果您將--libcurl code.c添加到curl命令行中,您會看到它使用的是哪個libcurl選項,然後您會看到CURLOPT_CUSTOMREQUEST是您在解決方案中錯過的命令行模擬。即CURLOPT_INFILE方法將假設並默認爲PUT,但您可以覆蓋該方法。