1. ホーム
  2. shell

[解決済み] cURL を使ってファイル付き POST データをアップロードする

2022-03-20 06:37:07

質問

HTTP POSTでデータパラメータを送信するだけでなく、特定のフォーム名でファイルをアップロードするためにcURLを使用したいと思います。どのようにすればよいのでしょうか?

HTTP Postのパラメータです。

ユーザーID = 12345 filecomment = これは画像ファイルです

HTTPファイルアップロード。 ファイルの場所 = /home/user1/Desktop/test.jpg ファイルのフォーム名 = image (PHP側の$_FILES['image']に対応する)

cURLコマンドの一部を以下のように考えてみました。

curl -d "userid=1&filecomment=This is an image file" --data-binary @"/home/user1/Desktop/test.jpg" localhost/uploader.php

私が得ている問題は以下の通りです。

Notice: Undefined index: image in /var/www/uploader.php

問題は、PHPスクリプトでファイルをピックアップするために$_FILES['image']を使用していることです。

cURLコマンドはどのように調整すればよいですか?

どのように解決するのですか?

を使用する必要があります。 -F オプションを使用します。
-F/--form <name=content> Specify HTTP multipart POST data (H)

これを試してみてください。

curl \
  -F "userid=1" \
  -F "filecomment=This is an image file" \
  -F "image=@/home/user1/Desktop/test.jpg" \
  localhost/uploader.php