ホームページ  >  記事  >  バックエンド開発  >  PHP で一時ファイルを使用せずに cURL を使用してファイル文字列を POST する方法は?

PHP で一時ファイルを使用せずに cURL を使用してファイル文字列を POST する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-17 18:30:02313ブラウズ

How to POST a File String Using cURL in PHP Without Temporary Files?

PHP で cURL を使用したファイル文字列の POST

ファイルが文字列のみとして表される場合、他のフォーム データとともにファイルを送信するタスクはより複雑になります。このチュートリアルでは、PHP で cURL を使用してリクエストを構築し、一時ファイルの作成をバイパスする方法を説明します。

解決策

ブラウザからのサンプル POST リクエストを分析すると、次のようなマルチパート/フォーム データ構造が明らかになります。独特の境界線。この形式を手動で複製するには、次の作業が必要です。

  1. フォーム データ本体の作成: ファイル フィールドとファイル以外のフィールドを分離し、それらを適切なヘッダーと区切り文字で連結します。例:
--boundary
Content-Disposition: form-data; name="otherfield"
Content-Type: text/plain

other field content
--boundary
Content-Disposition: form-data; name="filename"; filename="test.jpg"
Content-Type: image/jpeg

raw JPEG data
--boundary--
  1. cURL オプションの設定: multipart/form-data を使用した POST リクエストを処理し、コンテンツの長さを指定するように cURL を構成します。
<code class="php">$options = array(
    // Send post data over a POST request
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => array(
        // Content-type to multipart/form-data with boundary
        'Content-Type: multipart/form-data; boundary='.$delimiter,
        // Content-Length to the length of our multipart form data
        'Content-Length: ' . strlen($data)
    )
);</code>
  1. cURL リクエストの実行:curl_setopt を使用して POST フィールドを設定し、リクエストを実行します。
<code class="php">curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
curl_exec($handle);</code>

本文を作成し、適切なヘッダーを設定すると、ブラウザからの POST リクエストがシミュレートされ、一時ファイルの作成が回避されます。

以上がPHP で一時ファイルを使用せずに cURL を使用してファイル文字列を POST する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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