URLエンドポイントに対してHTTP POST
にあるローカルファイルのcontents(文字列として)のpath/to/my-file.txt
を実行したいhttp://example.com/
で。
たとえば、次のようにすることができます。
my-file.txt
の内容を文字列として抽出します。foo
という名前の変数として保存します。次に、次のようにします。
curl -d "data=foo" http://example.com/
(実際にはfoo
変数は必要ありません。これは、質問を説明するための便利な方法です。)
これを実行するために必要なコマンドは何ですか?シェルスクリプトを記述する必要がありますか?もしそうなら、それはどのように見えるでしょうか?
man curlの-dの最後のセクションによると:
@の文字でデータを開始する場合、残りは、データを読み取るファイル名にする必要があります。または、curlでstdinからデータを読み取る場合。複数のファイルを指定することもできます。したがって、「foobar」という名前のファイルからデータを投稿するには、-data @foobarを使用します。そのようなファイルから読み取るように--dataに指示すると、改行と改行が削除されます。
つまり、ファイル名の先頭に@を付けるだけで、特別なことをする必要はありません。
明確にするために、受け入れられた回答は次のことを示唆しています。
curl -d "data=@path/to/my-file.txt" http://example.com/
マニュアルリファレンスはこちら 。 (ページで-d, --data <data>
を検索してください)。
このSEの回答も参照 および これはマルチパートの場合も同様 。
これで述べたように 関連する質問 変更なしでファイルをアップロードしたい場合(復帰/改行の削除)、--data-binary
オプションを使用することができます:
curl -X POST --data-binary @path/to/my-file.txt http://example.com/