ホームページ >バックエンド開発 >PHPチュートリアル >PHPのcURLでマルチパート/フォームデータを介して生の画像データを送信するにはどうすればよいですか?

PHPのcURLでマルチパート/フォームデータを介して生の画像データを送信するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-21 07:29:131002ブラウズ

How to Send Raw Image Data via Multipart/Form-Data in cURL for PHP?

PHP の cURL で Multipart/Form-Data 経由で生の画像データを送信する

multipart/ 経由で画像データを期待する API と対話する場合フォームデータの場合、画像を正しく投稿するのは難しい場合があります。 PHP では、このプロセスには multipart/form-data ヘッダーの設定と生の画像データの処理が含まれます。

フォーム構造

クライアント側では、HTML フォームを作成できます。以下に示すように:

<form action="http://myServerURL" method="POST" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="Submit">
</form>

サーバー側処理

サーバー側で、画像データを投稿するための PHP コードは次のようになります。

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
$filePath = '/path/to/image.png';
$fields = [
    'name' => new \CurlFile($filePath, 'image/png', 'filename.png')
];
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieJar);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// Get the response and check the content type
$response = curl_exec($ch);
$requestContentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
echo "<br>request Content Type was:".$requestContentType."<br>";

curl_close($ch);

echo "<br><b>SERVER POST IMAGE RESPONSE:</b><br>";
echo $response;

CurlFile オブジェクトの使用

5.6 より前の PHP バージョンでは、CURLOPT_SAFE_UPLOAD を設定せずに @$filePath を使用すると、 仕事。ただし、PHP 7 以降では、ファイルのアップロードを安全に処理するために CurlFile オブジェクトを使用する必要があります。これにより、生の画像データが正しく転送されることが保証されます。

以上がPHPのcURLでマルチパート/フォームデータを介して生の画像データを送信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。