2017-04-12 5 views
-1

私はAPIを介してコンピュータにファームウェアをアップロードしようとしている、とPOST経由で自分のファイルをアップロードすることはできません。これは、「一般」ヘッダーです:ファームウェアページ私は通常、私は、当社のウェブサーバ上のボタンのクリックによって行うcURLの

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 

、私はボタンをクリックしてしまうと、それは/ファームウェア/ Linuxの/に私のファームウェアファイルをアップロードします。私は、ファームウェアファイル送信時に

これは私のレスポンスヘッダである:ここで

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 

を私のリクエストヘッダです:

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: ''

が得られます。

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" 

上記のコマンド利回りエラーなし、しかし、私はそれからかどうかを確認ファームウェアは更新されており、更新されていません。

は私が正しく私のファイルを掲示するのですか?なぜファームウェアファイルがプッシュされていないのかわかりません。

ご協力ありがとうございます。

+0

トークが安く、私にコードを見せてください! (c)Linus Torvalds – webKnjaZ

答えて

0

私は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/

次に、あなたがマルチパートformpostsをしたいとあなたは-Fをしたいと-dない:

https://ec.haxx.se/http-postvspost.html

は、私はファイルを正しく投稿していますか?なぜファームウェアファイルがプッシュされていないのかわかりません。

最初にカールの本の「HTTP multipart formposts」セクションを参照してください。それを読んだ後に何か不明な点がある場合は、指定して質問してください。本の章...

https://ec.haxx.se/http-multipart.html

-

/daniel.haxx.se

このファイルを正常に提出した私の最終のcURLコマンドは、あります。

curl -i -F [email protected]"C:\Users\user\Documents\Firmware\firmwareFile" http://192.168.243.179:8080/firmware/file 
関連する問題