web-dev-qa-db-ja.com

POST cURLを使用してファイルの内容を表示する方法は?

URLエンドポイントに対してHTTP POSTにあるローカルファイルのcontents(文字列として)のpath/to/my-file.txtを実行したいhttp://example.com/で。

たとえば、次のようにすることができます。

  1. ファイルmy-file.txtの内容を文字列として抽出します。
  2. 文字列をURLエンコードします。
  3. エンコードされた文字列をfooという名前の変数として保存します。

次に、次のようにします。

curl -d "data=foo" http://example.com/

(実際にはfoo変数は必要ありません。これは、質問を説明するための便利な方法です。)

これを実行するために必要なコマンドは何ですか?シェルスクリプトを記述する必要がありますか?もしそうなら、それはどのように見えるでしょうか?

11
Mowzer

man curl-dの最後のセクションによると:

@の文字でデータを開始する場合、残りは、データを読み取るファイル名にする必要があります。または、curlでstdinからデータを読み取る場合。複数のファイルを指定することもできます。したがって、「foobar」という名前のファイルからデータを投稿するには、-data @foobarを使用します。そのようなファイルから読み取るように--dataに指示すると、改行と改行が削除されます。

つまり、ファイル名の先頭に@を付けるだけで、特別なことをする必要はありません。

15
Gombai Sándor

明確にするために、受け入れられた回答は次のことを示唆しています。

curl -d "data=@path/to/my-file.txt" http://example.com/

マニュアルリファレンスはこちら 。 (ページで-d, --data <data>を検索してください)。

このSEの回答も参照 および これはマルチパートの場合も同様

10
Mowzer

これで述べたように 関連する質問 変更なしでファイルをアップロードしたい場合(復帰/改行の削除)、--data-binaryオプションを使用することができます:

curl -X POST --data-binary @path/to/my-file.txt http://example.com/
8
Pierz