ホームページ > バックエンド開発 > PHPチュートリアル > マルチパートコンテンツタイプと境界を指定して file_get_contents() を使用してファイルをアップロードするにはどうすればよいですか?

マルチパートコンテンツタイプと境界を指定して file_get_contents() を使用してファイルをアップロードするにはどうすればよいですか?

DDD
リリース: 2024-10-18 12:30:30
オリジナル
1081 人が閲覧しました

How to Upload Files Using file_get_contents() with Multipart Content-Type and Boundary?

file_get_contents() を使用したファイルのアップロード

cURL はファイルをアップロードするための簡単な方法を提供しますが、次のように file_get_contents() 関数を利用することもできます。 http ストリーム コンテキスト。このアプローチには、定義された境界を持つマルチパート Content-Type リクエストの作成が含まれます。

Multipart Content-Type と境界:

Multipart Content-Type は、HTTP 内の複数のパートを有効にします。リクエスト本文。境界文字列は、本文の内容とは異なり、部分間の区切り文字として機能します。境界を定義する方法は次のとおりです:

<code class="php">define('MULTIPART_BOUNDARY', '--------------------------' . microtime(true));</code>
ログイン後にコピー

HTTP ヘッダーとコンテンツ本文:

Content-Type ヘッダーは Web サーバーへの境界を指定します:

<code class="php">$header = 'Content-Type: multipart/form-data; boundary=' . MULTIPART_BOUNDARY;</code>
ログイン後にコピー

次に、各ファイルとフィールドのパーツを作成してコンテンツ本文を構築します。

<code class="php">define('FORM_FIELD', 'uploaded_file');

$filename = "/path/to/uploaded/file.zip";
$file_contents = file_get_contents($filename);

$content = "--" . MULTIPART_BOUNDARY . "\r\n" .
            "Content-Disposition: form-data; name=\"" . FORM_FIELD . "\"; filename=\"" . basename($filename) . "\"\r\n" .
            "Content-Type: application/zip\r\n\r\n" .
            $file_contents . "\r\n";</code>
ログイン後にコピー

必要に応じて POST フィールドを追加します。

<code class="php">$content .= "--" . MULTIPART_BOUNDARY . "\r\n" .
            "Content-Disposition: form-data; name=\"foo\"\r\n\r\n" .
            "bar\r\n";</code>
ログイン後にコピー

次でリクエストを終了します。末尾の境界:

<code class="php">$content .= "--" . MULTIPART_BOUNDARY . "--\r\n";</code>
ログイン後にコピー

ストリーム コンテキストと実行:

ストリーム コンテキストの作成:

<code class="php">$context = stream_context_create(array(
    'http' => array(
          'method' => 'POST',
          'header' => $header,
          'content' => $content,
    )
));</code>
ログイン後にコピー

最後に、アップロードを実行します。

<code class="php">file_get_contents('http://url/to/upload/handler', false, $context);</code>
ログイン後にコピー

注: HTTP はバイナリ データを処理できるため、バイナリ ファイルを送信する前にエンコードしないでください。

以上がマルチパートコンテンツタイプと境界を指定して file_get_contents() を使用してファイルをアップロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート