したがって、基本的に、Dot Net Nukeと対話するための一連のスクリプトを作成しようとしています。トラフィックを分析してきたので、ログインしていくつかの基本的なタスクを実行できます。ただし、カールを使用してバイナリファイルのアップロードを処理したことはありません。誰かが私を助けるためにこれを見て喜んでいますか?リクエストの構造は次のとおりです。
これまでのところ、私が持っているカールは次のとおりです。
編集:怠け者のために-
ファイルの長さが達成され、LENGTHに保存されます
STUFFは、URLを除いたパラメーター付きのリクエストURLの単なるコピー/貼り付けです。
curl -L --cookie ~/.cms --data-binary "@background.jpg" \
--header "Content-Length: $LENGTH" \
--header "Content-Disposition: form-data" \
--header "name=\"RadFileExplorer1_upload1file0\"" \
--header "Content-Type: image/jpg" \
--header "Filename=\"background.jpg\"" \
--data $STUFF \
--referer "Kept-Secret" \
"Kept-Secret"
-header "Content-Length:$ LENGTH"は必要ありません。
curl --request POST --data-binary "@ template_entry.xml" $ URL
GETリクエストはコンテンツ本文を広くサポートしていないことに注意してください。
また、POSTリクエストには2つの異なるコーディングスキーマがあります。これは最初の形式です。
$ nc -l -p 6666& $ curl --request POST --data-binary "@README" http:// localhost:6666 POST/HTTP/1.1 ユーザーエージェント:curl/7.21.0(x86_64-pc-linux-gnu)libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2 .3.4 libidn/1.15 libssh2/1.2.6 Host:localhost:6666 Accept:*/* Content-Length:9309 Content-Type:application /x-www-form-urlencoded 期待:100-continue ..-*-モード:rst;コーディング:cp1251; fill-column:80-*- .. rst2html.py README README.html .. contents ::
あなたはおそらくこれを要求します:
-F /-form name = content (HTTP)これにより、curlはユーザーが送信ボタンを押した の入力フォームをエミュレートします。 This により、カールはPOST Content-Type multipart/form-dataを使用してRFC2388に準拠したデータになります。これにより、バイナリファイルのアップロードが可能になります。 「コンテンツ」部分を強制的にファイルにするには、ファイル名 の前に@記号を付け、コンテンツ部分を ファイルから取得するには、記号<。のファイル名。@と<の の違いは、@が ファイルをファイルアップロードとして投稿に添付することです。 は<テキストフィールドを取得し、そのテキストフィールドの コンテンツをファイルから取得します。