我想測試一個休息API上傳本地文件到https網址。我目前正在使用curl來做到這一點。問題是我的curl中的POST被轉換爲PUT(http://curl.haxx.se/docs/manpage.html)中提到了相同。 從命令行測試我使用了以下內容:上傳本地文件使用php
捲曲-H「內容類型:應用程序/ JSON」 -H「授權:承載XXXXXXXXXXXXXXXYYYYYzzzzzz」 -H「接受版本:〜1」 - H 「除外:100繼續」 -H 「接受版本:〜1」 -T 「SomeFile.pdf的」 「https://abc-xyz.co/docs」
輸出:
{"code":"BadMethod","message":"/docs does not support PUT"}
我的php代碼:
$url = '"https://abc-xyz.co/docs';
$filepath = '/Users/me/Documents/somefile.pdf'; //mac path
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER,
array('Authorization: Bearer XXXXXXXXXXXXXXXYYYYYzzzzzz', 'Accept-Version: ~1', 'Except: 100-continue');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$file = "@".$filepath;
curl_setopt($ch, CURLOPT_POSTFIELDS,$file);
$response = curl_exec($ch);
if(!CURL_ERROR($ch))
{
echo"\n The output is:".$response;
}
else
{
echo "\nUpload failed ".curl_error($ch);
exit;
}
curl_close($ch);
輸出:我得到解析錯誤。
有一個人可以教育我的三件事:
- 我可以使用curl用於HTTPS做POST?如果是的話,怎麼樣?如果沒有,我的方法應該是什麼?
- 如何在我的PHP中傳遞文件路徑名?我嘗試了「@」。$ filepath,但它仍然不喜歡它。
- 如果我想限制我的文件上傳類型只有pdf應該使用MIME類型? (應用/ PDF ????)
謝謝, DR
謝謝你Wrikken。我會嘗試你所建議的。 – 38172
我沒看curl後的文件上傳。提到,但問題是,我通過https發送文件,並從Curl的POST被轉換成我的服務器不支持的「PUT」。我想通過https使用POST上傳本地文件。 – 38172
@ 38172:那麼我不能重現你的問題。在PHP中提到的數組只是_works在這裏(tm)_ ...並且看,超級用戶的curl回答也適用於這裏。你確定問題不在代理/接收方嗎? – Wrikken