コマンドラインからCurl経由でPOSTリクエストをする必要があります。この要求のデータはファイルにあります。私はPUTを介してこれが--upload-file
オプションで行われることを知っています。
curl Host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"
あなたは--data-binary
引数を探しています:
curl -i -X POST Host:port/post-file \
-H "Content-Type: text/xml" \
--data-binary "@path/to/file"
上の例では、-i
は何が起こっているのかを見ることができるようにすべてのヘッダを出力し、-X POST
はこれが投稿であることを明示的にしています。これらは両方とも、ワイヤ上の動作を変えずに安全に省略できます。ファイルへのパスの前に@
記号を付ける必要があるため、curl
はファイルから読み取ることを認識しています。
コマンドラインからCurl経由でPOSTリクエストをする必要があります。このリクエストのデータはファイルにあります...
--data
引数を@
で始めることだけです。
curl -H "Content-Type: text/xml" --data "@path_of_file" Host:port/post-file-path
たとえば、stuff.xml
という名前のファイルにデータがある場合は、次のようにします。
curl -H "Content-Type: text/xml" --data "@stuff.xml" Host:port/post-file-path
stuff.xml
ファイル名は、ファイルへの相対パスまたは絶対パスで置き換えることができます。@../xml/stuff.xml
、@/var/tmp/stuff.xml
、...
ファイルをアップロードするためにフォームデータを使用している場合は、パラメータ名を指定する必要があります。
curl -X POST -i -F parametername=@filename Host:port/xxx
答えのほとんどはここで完璧ですが、特定の問題のためにここに着いたとき、POSTメソッドを使用してバイナリファイル(XLSXスプレッドシート)をアップロードする必要があり、1つ、つまり通常はロードするファイルだけではなく、フォームデータ要素、ファイルまたはタグへのコメントなどがありますfileなどに私のケースでした。したがって、他の人を助けることができるように、私のユースケースであるため、ここに追加したいと思います。
curl -POST -F comment=mycomment -F file_type=XLSX -F file_data=@/your/path/to/file.XLSX http://yourhost.example.com/api/example_url