Wgetに--post-file
オプションがあることがわかりますが、マンページには
Wgetは現在、POSTデータを送信するためのmultipart/form-dataをサポートしていません。application/ x-www-form-urlencodedのみです。
--post-data
と--post-file
のどちらかのみ指定する。
Multipart/form-dataでファイルをアップロードするための同様の方法はありますか?
カールを使用:
curl -F "file=@localfile;filename=nameinpost" url.com
これはwgetでのみ実行できます。少なくともバージョン1.13.4と多分他のもので。 --post-fileオプションを使用すると、postdataファイルが適切に構築されている限り、送信するファイルを指定できます。
また、これをバイナリファイルでテストしましたが、期待どおりに動作します。ファイルをbase64エンコードする必要はありませんが、ファイルに境界が含まれていないことを確認する必要があります。
この作業を行うために最低限必要なコマンドは次のとおりです。
wget --header="Content-type: multipart/form-data boundary=FILEUPLOAD" --post-file postfile http://domain/uploadform
そしてpostdataファイルは次のようなものを含む必要があります:
--FILEUPLOAD
Content-Disposition: form-data; name="comment"
I love uploading files!
--FILEUPLOAD
Content-Disposition: form-data; name="uploadFile"; filename="myfile.bin";
Content-Type: application/octet-stream
Media Type: application/octet-stream
Give me some automated file upload action!
--FILEUPLOAD--
ここでは、いくつかの詳細が重要です。
一部の制御された環境ではwgetがカールしていないため、これが誰かを助けるかもしれないと思いました。