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!