я пытаюсь отправить два файла через cURL API. Кажется, это работает, за исключением того, что API возвращается и говорит, что тип файла не разрешен. Ответ:
string(189)
{
"StatusId": -1,
"Success": false,
"ReturnObject": null,
"Message": "Please check the file format of the uploaded files. We currently only support .pdf .jpg, .png, .bmp and .gif file extensions.
}
Как видите, ответ API JSON означает, что он может видеть, что есть файлы, но просто думает, что у них нет расширения. Я посмотрел на абсолютный URL-адрес файла и расширение файла, и они все JPG или PDF. Есть идеи?
Вот мой код CURL:
// send a file
curl_setopt($request, CURLOPT_POST, true);
curl_setopt(
$request,
CURLOPT_POSTFIELDS,
array(
'ClientID' => $client,
'file' =>
'@'.realpath(__DIR__ . '/..').'/webroot/img/uploads/documents/'.$_FILES['image']['name'],
'file2' =>
'@'.realpath(__DIR__ . '/..').'/webroot/img/uploads/documents/'.$_FILES['image1']['name']
));
curl_setopt(
$request, CURLOPT_HTTPHEADER, array(
"authentication: XXXXXXXXXXXXX",
"cache-control: no-cache",
"content-type: multipart/form-data;"));
curl_setopt(
$request, CURLOPT_CUSTOMREQUEST, "POST");
// output the response
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
var_dump(curl_exec($request));
// close the session
curl_close($request);
Какой API вы используете?
Без какой-либо конкретной информации я просто должен сделать дикое предположение: ответ от API говорит
В настоящее время мы поддерживаем только расширения файлов .pdf .jpg, .png, .bmp и .gif.
Тем не менее, в своем вопросе вы упоминаете, что расширения файлов
Все JPG или PDF.
Возможно, проблема в том, что ваши файлы имеют расширения в верхнем регистре, например .JPG и .PDF, но API принимает только расширения нижнего регистра, например .jpg и .pdf. Некоторые файловые системы (например, FAT или NTFS в Windows) не заботятся о верхнем или нижнем регистре в именах файлов, но другие файловые системы (например, ext4 в Linux) заботятся. Поэтому постарайтесь изменить все расширения так, чтобы они состояли из строчных букв только перед отправкой файлов в API.
Другим предположением будет формат файла, то есть фактическое содержание файла, не является одним из форматов файлов, поддерживаемых API. Например, кто-нибудь может взять текстовый файл foo.txt
и переименуйте его в foo.jpg
, Это позаботится о расширении, но содержимое файла все еще текстовое, а не изображение JPEG. Может быть, API тоже это проверяет.
Других решений пока нет …