我无法使用 cURL 通过 POST 上传我的文件
I cannot upload my file via POST with cURL
我正在尝试通过 API 将固件上传到计算机,这通常是通过单击我们网络服务器上的按钮来完成的。这是 'General' header:
Request URL:http://192.168.243.179:8080/firmware/linux/
Request Method:POST
Status Code:200 OK
Remote Address:192.168.243.179:8080
Referrer Policy:no-referrer-when-downgrade
在固件页面上,我会点击一个按钮,它将我的固件文件上传到 /firmware/linux/。
这是我提交固件文件时的回复header:
HTTP/1.1 200 OK
Date: Tue, 11 Apr 2017 23:22:43 GMT
Content-Length: 134
Content-Type: text/html;charset=utf-8
Server: CherryPy/3.2.2
这是我的请求header:
POST /firmware/linux HTTP/1.1
Host: 192.168.243.179:8080
Connection: keep-alive
Content-Length: 63067756
Cache-Control: max-age=0
Origin: http://192.168.243.179:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
Content-Type: multipart/form-data; boundary=----
WebKitFormBoundarynaUDhUWIArqOTvuC
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://192.168.243.179:8080/firmware/
Accept-Encoding: gzip, deflate
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
和我的请求负载:
------WebKitFormBoundarynaUDhUWIArqOTvuC
Content-Disposition: form-data; name="image"; filename="uImage-jjr-dvr-
atlas_v1.0.1-16-g5e31aec"
Content-Type: application/octet-stream
------WebKitFormBoundarynaUDhUWIArqOTvuC--
我正在使用以下 cURL 命令将这些请求 POST 我的固件文件传输到计算机:
curl -i -X POST -d @"C:\Users\name\Documents\firmware/firmwarefile" http://192.168.243.179:8080/firmware/linux/ -H "Content-Type: multipart/form-data"
以上产生错误ValueError: Invalid boundary in multipart form: ''
然后我尝试使用我请求中提供的边界 header:
curl -i -X POST -d @"C:\Users\name\Documents\firmware/firmwarefile" http://192.168.243.179:8080/firmware/linux/ -H
"Content-Type: multipart/form-data; boundary=----WebKitFormBoundarynaUDhUWIArqOTvuC"
上面的命令没有产生错误,但是我检查了固件是否已经更新,并没有。
我发布的文件是否正确?不明白为什么固件文件推送不通
提前感谢您的帮助。
我从 cURL 的官方论坛获得了帮助,我收到了一封电子邮件,其中已经解决了我的问题。
I am using the following cURL command to imitate these requests to POST my
firmware file over to the computer:
*curl -i -X POST -d @"C:\Users\name\Documents\firmware/firmwarefile"
首先,避免 -X:
https://daniel.haxx.se/blog/2015/09/11/unnecessary-use-of-curl-x/
然后,因为你想要多部分的表单,你想要 -F 而不是 -d:
https://ec.haxx.se/http-postvspost.html
我发布的文件是否正确?不明白为什么固件文件推送不通
我想先参考 curl 书的“HTTP multipart formposts”部分,如果您阅读后有任何不清楚的地方,请提出具体要求,我会尽量在回复中详细说明或澄清本书章节...
https://ec.haxx.se/http-multipart.html
--
/daniel.haxx.se
这是我最后的 cURL 命令,成功提交了文件。
curl -i -F image=@"C:\Users\user\Documents\Firmware\firmwareFile" http://192.168.243.179:8080/firmware/file
我正在尝试通过 API 将固件上传到计算机,这通常是通过单击我们网络服务器上的按钮来完成的。这是 'General' header:
Request URL:http://192.168.243.179:8080/firmware/linux/
Request Method:POST
Status Code:200 OK
Remote Address:192.168.243.179:8080
Referrer Policy:no-referrer-when-downgrade
在固件页面上,我会点击一个按钮,它将我的固件文件上传到 /firmware/linux/。
这是我提交固件文件时的回复header:
HTTP/1.1 200 OK
Date: Tue, 11 Apr 2017 23:22:43 GMT
Content-Length: 134
Content-Type: text/html;charset=utf-8
Server: CherryPy/3.2.2
这是我的请求header:
POST /firmware/linux HTTP/1.1
Host: 192.168.243.179:8080
Connection: keep-alive
Content-Length: 63067756
Cache-Control: max-age=0
Origin: http://192.168.243.179:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
Content-Type: multipart/form-data; boundary=----
WebKitFormBoundarynaUDhUWIArqOTvuC
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://192.168.243.179:8080/firmware/
Accept-Encoding: gzip, deflate
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
和我的请求负载:
------WebKitFormBoundarynaUDhUWIArqOTvuC
Content-Disposition: form-data; name="image"; filename="uImage-jjr-dvr-
atlas_v1.0.1-16-g5e31aec"
Content-Type: application/octet-stream
------WebKitFormBoundarynaUDhUWIArqOTvuC--
我正在使用以下 cURL 命令将这些请求 POST 我的固件文件传输到计算机:
curl -i -X POST -d @"C:\Users\name\Documents\firmware/firmwarefile" http://192.168.243.179:8080/firmware/linux/ -H "Content-Type: multipart/form-data"
以上产生错误ValueError: Invalid boundary in multipart form: ''
然后我尝试使用我请求中提供的边界 header:
curl -i -X POST -d @"C:\Users\name\Documents\firmware/firmwarefile" http://192.168.243.179:8080/firmware/linux/ -H
"Content-Type: multipart/form-data; boundary=----WebKitFormBoundarynaUDhUWIArqOTvuC"
上面的命令没有产生错误,但是我检查了固件是否已经更新,并没有。
我发布的文件是否正确?不明白为什么固件文件推送不通
提前感谢您的帮助。
我从 cURL 的官方论坛获得了帮助,我收到了一封电子邮件,其中已经解决了我的问题。
I am using the following cURL command to imitate these requests to POST my
firmware file over to the computer:
*curl -i -X POST -d @"C:\Users\name\Documents\firmware/firmwarefile"
首先,避免 -X:
https://daniel.haxx.se/blog/2015/09/11/unnecessary-use-of-curl-x/
然后,因为你想要多部分的表单,你想要 -F 而不是 -d:
https://ec.haxx.se/http-postvspost.html
我发布的文件是否正确?不明白为什么固件文件推送不通
我想先参考 curl 书的“HTTP multipart formposts”部分,如果您阅读后有任何不清楚的地方,请提出具体要求,我会尽量在回复中详细说明或澄清本书章节...
https://ec.haxx.se/http-multipart.html
--
/daniel.haxx.se
这是我最后的 cURL 命令,成功提交了文件。
curl -i -F image=@"C:\Users\user\Documents\Firmware\firmwareFile" http://192.168.243.179:8080/firmware/file