无法通过curl上传文件

时间:2019-10-13 15:43:48

标签: php curl file-upload

尝试使用curl构建图像自动上传php工具。与其他上载内容一样,没有问题。但是,当涉及到图像上传部分时,我就陷入了困境。在SO处查看了其他类似问题,但找不到任何有帮助的东西。

使用Firefox开发人员工具,我发现发送的标头是:

Host: www.xxxxxx.com
User-Agent: Mozilla/5.0 
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://www.xxxxxx.com
Content-Type: multipart/form-data; boundary=---------------------------54682012365
Content-Length: 13645
Origin: https://www.xxxxxx.com
DNT: 1
Connection: keep-alive
Cookie: PHPSESSID=xxxxx;
TE: Trailers

身体要求:

-----------------------------54682012365
Content-Disposition: form-data; name="file"; filename="test.jpg"
Content-Type: image/jpeg

--->THERE GOES SOMETHING I BELIEVE TO BE IMAGETOTEXT(random symbols with few readable parts)<---
-----------------------------54682012365
Content-Disposition: form-data; name="ImId"

0
-----------------------------54682012365--

试图通过CURL重现请求

发送上面的标题。 正文请求:

$img = file_get_contents('test.jpg');
$body_message = 
'---------------------------54682012365
Content-Disposition: form-data; name="file"; filename="test.jpg"
Content-Type: image/jpeg

'.$img.'
---------------------------54682012365
Content-Disposition: form-data; name="ImId"

0
---------------------------54682012365--';

卷曲选项:

CURLOPT_RETURNTRANSFER => true, 
CURLOPT_HEADER => 1, 
CURLINFO_HEADER_OUT => true, 
CURLOPT_POST => 1, 
CURLOPT_POSTFIELDS => $body_message

但始终会收到自定义JSON错误'No images selected';

使用$body_message进行了各种修改,使用Curlfile进行了一些尝试,但仍然没有成功。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

有一个愚蠢的错误,但是花了一些时间才意识到。 如果有人遇到像我这样的错误: 标头和正文请求中的边界长度不同

---------------------------54682012365
-----------------------------54682012365

在我的$body_message边界中,短2个破折号