Запрос CURL работает через командную строку, но не в PHP - PullRequest
0 голосов
/ 14 июля 2020

Приведенная ниже команда отлично работает в командной строке.

curl -X POST "http://xxx.xx.xx.xx:xxxx/api/upload?id=123456" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "file=@a.pdf;type=application/pdf"

Когда я нажимаю указанную выше команду с помощью командной строки, она дает токен в ответном ответе. Если я также звоню через POSTMAN, он работает нормально. Но когда я запрашиваю через PHP CURL, он не дает ни ошибки, ни токена в ответ. Я скопировал код PHP -CURL из POSTMAN

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://xxx.xx.xx.xx:xxxx/api/upload?id=123456",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => array('file'=> new CURLFILE('/C:/Users/User/Downloads/c.pdf')),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
?>

1 Ответ

0 голосов
/ 14 июля 2020

Попробуйте добавить в запрос Content-Type: multipart/form-data, например CURLOPT_HTTPHEADER => array('Content-Type: multipart/form-data')

...