【问题标题】:cURL File Upload - "No File Provided"cURL 文件上传 - “未提供文件”
【发布时间】:2016-02-03 14:27:38
【问题描述】:

我一直在使用 cURL 成功地与基于 Flash 的网页交互以提取数据,但是现在我正在尝试使用该站点的上传功能来提供文件。对于工作请求,我会分解使用 Chrome 开发者工具发出的请求并在 cURL 中重新创建它们。但是当我尝试上传文件时,我收到 {"error":"no file provided"} 的 JSON 响应。

从开发工具中提取的代码格式不起作用:

curl "<URL>" -H "Origin: <URL>" -H "Accept-Encoding: gzip, deflate" -H     "Accept-Language: en-US,en;q=0.8" -H "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36" -H "Content-Type: multipart/form-data; boundary=----pluploadboundary1454508647816" -H "Accept: */*" -H "Referer: <URL>" -H "X-Requested-With: ShockwaveFlash/20.0.0.286" -H "Connection: keep-alive" -H "DNT: 1" --data-binary "------pluploadboundary1454508647816"^"Content-Disposition: form-data; name=""name"""^"unblock_User.xls"^"------pluploadboundary1454508647816"^"Content-Disposition: form-data; name=""file""; filename=""unblock_User.xls"""^"Content-Type: application/vnd.ms-excel"^

我尝试将其更改为使用标准 --data-binary=@file 其中@file 包含文件的边界和原始二进制数据,但无济于事。该文件的内容是:

-----pluploadboundary1453998534666

内容配置:表单数据;名称=“名称”

unblock_once.xlsx

-----pluploadboundary1453998534666

内容配置:表单数据;名称=“文件”;文件名="unblock_once.xlsx"

内容类型:application/vnd.ms-excel

通过将二进制文件'cat'到本节,原始数据将在此处,我可以在此处使用文件路径吗?

-----pluploadboundary1453998534666--

【问题讨论】:

    标签: linux bash curl


    【解决方案1】:

    很难确切地知道这里出了什么问题,不知道您正在针对哪个 web 应用程序工作。但是,我刚刚解决了一个类似的问题,发现了一些陷阱:

    • 使用了错误的边界。您的命令中的请求标头指定了“----pluploadboundary1454508647816”的边界,但您的有效负载使用的是“-----pluploadboundary1453998534666”。
    • 使用了错误的换行符。我使用的服务只喜欢 Windows 样式的换行符 (\r\n),因此我必须通过 unix2dos 运行我的有效负载文件以使其匹配。

    解决这些问题后,我得到了 --data-binary=@file 方法的工作。

    【讨论】:

      猜你喜欢
      • 2020-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 2014-11-16
      • 2015-05-14
      • 2017-12-04
      相关资源
      最近更新 更多