file_get_contents と HTTP ストリーム コンテキストを使用してファイルをアップロードする方法

Barbara Streisand
リリース: 2024-10-18 11:59:03
オリジナル
474 人が閲覧しました

How to Upload a File Using file_get_contents and HTTP Stream Context?

Uploading a File with file_get_contents and HTTP Stream Context

Unlike CURL, file_get_contents() can also be utilized to upload files to remote web servers using the HTTP stream context. To achieve this, follow these steps:

1. Define the Boundary:

Start by defining a boundary that will separate each part of the multipart Content-Type. Choose a string that doesn't exist within the content body.

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

2. Set the Content-Type Header:

Send the boundary in the Content-Type header to indicate the expected delimiter.

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

3. Define the Form Field Name:

Specify the name of the form field to which the file will be uploaded.

<code class="php">// equivalent to <input type="file" name="uploaded_file"/>
define('FORM_FIELD', 'uploaded_file'); </code>
ログイン後にコピー

4. Build the Content Body:

Construct the content body according to the HTTP specification and the header sent. Include the necessary headers and file content.

<code class="php">$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";

// add POST fields
$content .= "--".MULTIPART_BOUNDARY."\r\n".
            "Content-Disposition: form-data; name=\"foo\"\r\n\r\n".
            "bar\r\n";

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

5. Create the Context:

Build the stream context with the necessary HTTP parameters.

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

6. Execute the Request:

Upload the file using file_get_contents() with the context.

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

Remember, binary files do not need to be encoded before transmission. HTTP can handle them directly.

以上がfile_get_contents と HTTP ストリーム コンテキストを使用してファイルをアップロードする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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