CURL PHP发送文件扩展名错误

CURL PHP发送文件扩展名错误,php,file,curl,file-transfer,Php,File,Curl,File Transfer,我试图通过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, .b

我试图通过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也会检查这一点。

您使用的是什么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也会检查这一点。

如果您回显到图像的路径,会得到什么?路径是否正确,文件是否确实存在于该位置?是的,已检查并再次检查。如果文件为空,则API将返回空字符串错误,因此存在一个文件。。。但是它认为它的类型是错误的。api不支持pdf文件-这可能是错误的原因,使用的是哪个版本的php?如果你回显到图像的路径,会得到什么?路径是否正确,文件是否确实存在于该位置?是的,已检查并再次检查。如果文件为空,则API将返回空字符串错误,因此存在一个文件。。。但它认为它的类型是错误的。api不支持pdf文件,这可能是错误的原因,使用的是哪个版本的php?