2016-02-03 147 views
0

我一直在使用cURL成功地与基于Flash的网页交互来提取数据,但现在我试图使用网站的上传功能来提供文件。对于工作要求,我将分解使用Chrome开发人员工具所做的请求,并使用cURL重新创建它们。但是当我尝试文件上传时,我得到了一个JSON响应{“error”:“no file provided”}。cURL文件上传 - “没有文件提供”

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

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二进制= @文件,其中包含@file的边界和原始该文件的二进制数据,无济于事。该文件的内容是:

------ pluploadboundary1453998534666

内容处置:形状数据;名称= “名称”

unblock_once.xlsx

------ pluploadboundary1453998534666

内容处置:形状数据; NAME = “文件”;文件名=“unblock_once.xlsx”

内容类型:应用程序/ vnd.ms - Excel中

原始数据会在这里通过“cat'ing二进制文件到本节中,我可以使用路径到文件在这里呢?

------ pluploadboundary1453998534666--

回答

0

很难知道到底出了什么错在这里,不知道你对工作什么的web应用。然而,我刚刚通过类似的问题,发现了一些陷阱:

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

修复这些问题后,我得到了--data-binary = @文件方法。