web-dev-qa-db-ja.com

cURLを使用してファイルの内容をボディエンティティとして送信する方法

HTTP POSTをWebサービスに送信するためにcURLコマンドラインユーティリティを使用しています。 POSTのボディエンティティとしてファイルの内容を含めたいです。私は-d </path/to/filename>--data </path/to/filename> --data-urlencode </path/to/filename>などのようなタイプ情報を持つ他の変種を使用してみました...ファイルは常に添付されています。ボディエンティティとしてそれが必要です。

164
Roy Hinkley

私はあなたが@filename構文を探していると思います、例えば:

改行を削除

curl --data "@/path/to/filename" http://...

改行する

curl --data-binary "@/path/to/filename" http://...

=====

curlはファイルからすべての改行を取り除きます。改行を入れずにファイルを送信したい場合は、--dataの代わりに--data-binaryを使用してください。

276
Jeffrey Froman

私は質問が答えられたことを知っています、しかし私の場合私はテキストファイルの内容をSlack Webhook apiに送ろうとしていました、そして何らかの理由で上記の答えはうまくいきませんでした。とにかく、これがついに私のためにトリックをしたものです:

curl -X POST -H --silent --data-urlencode "payload={\"text\": \"$(cat file.txt | sed "s/\"/'/g")\"}" https://hooks.slack.com/services/XXX
7
cookiedough