web-dev-qa-db-ja.com

curlを使用したバイナリデータの投稿

したがって、基本的に、Dot Net Nukeと対話するための一連のスクリプトを作成しようとしています。トラフィックを分析してきたので、ログインしていくつかの基本的なタスクを実行できます。ただし、カールを使用してバイナリファイルのアップロードを処理したことはありません。誰かが私を助けるためにこれを見て喜んでいますか?リクエストの構造は次のとおりです。

http://Pastebin.com/qU8ZEMaQ

これまでのところ、私が持っているカールは次のとおりです。

http://Pastebin.com/LG2ubFZG

編集:怠け者のために-

ファイルの長さが達成され、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"
45
user798080

-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に準拠したデータになります。これにより、バイナリファイルのアップロードが可能になります。 
「コンテンツ」部分を強制的にファイルにするには、ファイル名
の前に@記号を付け、コンテンツ部分を
ファイルから取得するには、記号<。のファイル名。@と<の
の違いは、@が
ファイルをファイルアップロードとして投稿に添付することです。
は<テキストフィールドを取得し、そのテキストフィールドの
コンテンツをファイルから取得します。
67
gavenkoa