Я пытаюсь протестировать rest api для загрузки локального файла на https-url. В настоящее время я использую curl для этого. Проблема в том, что мой POST в curl преобразуется в PUT (http://curl.haxx.se/docs/manpage.html). Чтобы проверить из командной строки Я использую следующие:Загрузка локального документа с использованием php
завитка -H "Content-Type: применение/JSON" -H "Authorization: Bearer XXXXXXXXXXXXXXXYYYYYzzzzzz" -H "Accept-версии: ~ 1" - H "За исключением: 100-Continue" -H "Accept-версии: ~ 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);
Выход: я получаю ошибку синтаксического анализа.
Может кто-нибудь просветить меня с 3-мя вещами:
- Могу ли я использовать локон, чтобы сделать POST для HTTPS? если да, то как? и если нет, то каким должен быть мой подход?
- Как передать путь к файлу в моем php? Я попробовал «@». $ Filepath тоже, но он все равно не нравится.
- Если я хочу ограничить мой тип загрузки файлов только pdf, я должен использовать тип mime? (Приложение/PDF ????)
Спасибо, DR
Thank you Wrikken. Я попробую то, что вы предложили. – 38172
Я смотрел на постфайлов с curl. но проблема в том, что я отправляю файл через https, а POST из Curl преобразуется в «PUT», который мой сервер не поддерживает. Мне нужна помощь в том, как загрузить локальный файл, используя POST через https. – 38172
@ 38172: тогда я не могу воспроизвести вашу проблему. Сообщение с массивом в php, как упоминалось, просто _works здесь (tm) _ ... и вот и вот, ответ суперпользователя с curl работает здесь тоже. Вы уверены, что проблема не в прокси/принимающей стороне? – Wrikken