「curl -XPUT --data-binary @${file_path}」と「curl -XPUT -T ${file_path}」の違いは何ですか?

「curl -XPUT --data-binary @${file_path}」と「curl -XPUT -T ${file_path}」の違いは何ですか?

カールを使用してPOSTまたはファイルをURLにPUTする場合は、ファイルの内容を読み込む2つの方法があります。

  1. -T ${file_path}
  2. --data-binary @${file_path}または-d $@{file_path}(ASCIIデータファイルの場合)

これら2つのオプションの違いは何ですか?

ベストアンサー1

これらのオプションの違いを理解するには、以下をお読みください。マニュアルページまたは、いくつかの実験をしてみてください。

マニュアルページ

-d、--データ

指定したデータを次に送信します。郵便はがきユーザーがHTMLフォームを作成し、送信ボタンを押すとブラウザが要求するのと同様に、HTTPサーバーに要求します。これにより、カールは次を使用してデータをサーバーに渡します。コンテンツタイプアプリケーション/x-www-form-urlencoded。 [...]

-T, --ファイルのアップロード

これにより、指定されたローカルファイルがリモートURLに送信されます。 [...] HTTP(S) サーバーで使用される場合置くコマンドが使用されます。 [...]

いくつかの実験をしてください

リスニングモードでnetcat(macOSバージョン)を実行します。

nc -l localhost 8989

テストファイルの生成:

echo test>test

カールコマンドを実行し、リスニング側で結果を確認します。

% curl -d "name=test" localhost:8989

POST / HTTP/1.1
Host: localhost:8989
User-Agent: curl/7.84.0
Accept: */*
Content-Length: 9
Content-Type: application/x-www-form-urlencoded

name=test


% curl -T test localhost:8989

PUT /test HTTP/1.1
Host: localhost:8989
User-Agent: curl/7.84.0
Accept: */*
Content-Length: 5
Expect: 100-continue

test

あなたの質問に答えるために、この-dオプションはx-www-form-urlencoded形式のデータを送信してPOST要求を作成し、-Tデータ形式を指定せずにPUT要求を送信します。

おすすめ記事