im 尝试通过 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。一些文件系统(例如Windows上的FAT或NTFS)不关心文件名中的大写或小写,但其他文件系统(例如Linux上的ext4)确实关心。因此,在将文件发送到 API 之前,请尝试将所有扩展名更改为仅由小写字母组成。
另一个猜测是文件格式,即文件的实际内容,不是 API 支持的文件格式之一。例如,有人可以将文本文件foo.txt
重命名为 foo.jpg
。这将处理扩展名,但文件的内容仍然是文本而不是 JPEG 图像。也许 API 也会检查这一点。