【问题标题】:Can't upload file via curl无法通过 curl 上传文件
【发布时间】:2020-02-10 09:26:00
【问题描述】:

尝试使用 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尝试了一点,但仍然没有成功。 有什么想法吗?

【问题讨论】:

    标签: php curl file-upload


    【解决方案1】:

    有一个愚蠢的错误,但花了一些时间才意识到。 如果有人出现像我这样的错误: header 和 body 请求中的边界长度不同

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

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

    【讨论】:

    • 您应该强烈考虑使用 Guzzle 之类的工具来为您完成手动工作。
    • 不确定如何处理 'Content-Disposition: form-data; name="ImId"' 这部分
    猜你喜欢
    • 2020-01-05
    • 1970-01-01
    • 2016-02-22
    • 2017-10-25
    • 2016-03-19
    • 2011-10-20
    • 1970-01-01
    • 2011-08-04
    • 2017-04-21
    相关资源
    最近更新 更多