CURL PHP отправлять файлы ошибка расширения файла

я пытаюсь отправить два файла через 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);

1

Решение

Какой 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 тоже это проверяет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]