Rumah > pembangunan bahagian belakang > tutorial php > 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
Lepaskan: 2024-10-18 12:30:30
asal
1124 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

Tamatkan permintaan dengan sempadan mengekori:

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

Konteks Strim dan Pelaksanaan:

Buat konteks strim:

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

Akhir sekali, laksanakan muat naik:

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

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 Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan