ホームページ >バックエンド開発 >PHPチュートリアル >PHPのcURLでマルチパート/フォームデータを介して生の画像データを送信するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。