Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Muat Naik Fail Menggunakan file_get_contents() dengan Jenis Kandungan dan Sempadan Berbilang Bahagian?

Bagaimana untuk Muat Naik Fail Menggunakan file_get_contents() dengan Jenis Kandungan dan Sempadan Berbilang Bahagian?

DDD
DDDasal
2024-10-18 12:30:30970semak imbas

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

Memuat Naik Fail dengan file_get_contents()

Walaupun cURL menawarkan kaedah mudah untuk muat naik fail, anda boleh memanfaatkan fungsi file_get_contents() dengan konteks aliran http. Pendekatan ini melibatkan mewujudkan permintaan Jenis Kandungan berbilang bahagian dengan sempadan yang ditentukan.

Jenis Kandungan dan Sempadan Berbilang Bahagian:

Jenis Kandungan Berbilang mendayakan berbilang bahagian dalam HTTP badan permintaan. Rentetan sempadan, berbeza daripada kandungan badan, bertindak sebagai pembatas antara bahagian. Begini cara untuk menentukan sempadan:

<code class="php">define('MULTIPART_BOUNDARY', '--------------------------' . microtime(true));</code>

Pengepala HTTP dan Kandungan Kandungan:

Pengepala Jenis Kandungan menentukan sempadan kepada pelayan web:

<code class="php">$header = 'Content-Type: multipart/form-data; boundary=' . MULTIPART_BOUNDARY;</code>

Seterusnya, bina isi kandungan dengan mencipta bahagian untuk setiap fail dan medan:

<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>

Tambah medan POST tambahan seperti yang diperlukan:

<code class="php">$content .= "--" . MULTIPART_BOUNDARY . "\r\n" .
            "Content-Disposition: form-data; name=\"foo\"\r\n\r\n" .
            "bar\r\n";</code>

Tamatkan permintaan dengan sempadan mengekori:

<code class="php">$content .= "--" . MULTIPART_BOUNDARY . "--\r\n";</code>

Konteks Strim dan Pelaksanaan:

Buat konteks strim:

<code class="php">$context = stream_context_create(array(
    'http' => array(
          'method' => 'POST',
          'header' => $header,
          'content' => $content,
    )
));</code>

Akhir sekali, laksanakan muat naik:

<code class="php">file_get_contents('http://url/to/upload/handler', false, $context);</code>

Nota: Jangan kodkan fail binari sebelum menghantarnya, kerana HTTP boleh mengendalikan data binari.

Atas ialah kandungan terperinci Bagaimana untuk Muat Naik Fail Menggunakan file_get_contents() dengan Jenis Kandungan dan Sempadan Berbilang Bahagian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn