Bagaimanakah Saya Boleh Menghuraikan `multipart/form-data` secara Manual dalam PHP untuk Permintaan PUT?

Barbara Streisand
Lepaskan: 2024-10-28 06:47:02
asal
907 orang telah melayarinya

How Can I Parse Manually `multipart/form-data` in PHP for PUT Requests?

Menghuraikan Data Berbilang Bahagian/Borang dalam PHP secara Manual untuk Permintaan PUT

Menghuraikan data berbilang bahagian/borang-data mentah dalam PHP boleh menjadi mencabar, terutamanya untuk permintaan PUT. Penghurai terbina dalam PHP secara automatik mengendalikan permintaan POST tetapi bukan PUT.

Latar Belakang:

Data berbilang bahagian/bentuk ialah format yang digunakan untuk merangkum berbilang bahagian data, termasuk medan dan fail, dalam satu badan permintaan. Data dipisahkan oleh rentetan sempadan dan setiap bahagian mempunyai jenis kandungan serta nama.

Penghuraian Manual:

Untuk menghuraikan data berbilang bahagian/bentuk secara manual, anda boleh gunakan langkah berikut:

  1. Dapatkan semula data permintaan mentah: $input = file_get_contents('php://input');
  2. Ekstrak sempadan: preg_match('/boundary= (.*)$/', $_SERVER['CONTENT_TYPE'], $matches);
  3. Pisah data kepada blok berdasarkan sempadan: $a_blocks = preg_split("/- $boundary/", $ input);
  4. Untuk setiap blok:

    • Untuk medan fail (mengandungi "aplikasi/oktet-strim"):

      • Ekstrak nama medan dan kandungan fail: preg_match('/name="([^"]*)".*stream[n|r] ([^nr].*)?$/s', $ blok, $matches);
    • Untuk medan lain:

      • Ekstrak nama dan nilai medan: preg_match('/name="( [^"]*)"[n|r] ([^nr].*)?r$/s', $block, $matches);
  5. Tetapkan medan dan nilai kepada struktur data: $a_data[$matches[1]] = $matches[2];

Contoh Penggunaan:

<code class="php">$a_data = array();
parse_raw_http_request($a_data);
var_dump($a_data);</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghuraikan `multipart/form-data` secara Manual dalam PHP untuk Permintaan PUT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan