我正在尝试测试一个用于将本地文件上传到 https url 的 rest api。我目前正在使用 curl 来做到这一点。问题是我在 curl 中的 POST 被转换为 PUT (http://curl.haxx.se/docs/manpage.html) 也提到了同样的问题。要从命令行进行测试,我使用以下内容:
curl -H "Content-Type: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXYYYYYzzzzzz" -H "Accept-Version: ~1" -H "Except: 100-continue" -H "Accept-Version: ~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????)
谢谢,博士