Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Boleh Menghuraikan `multipart/form-data` secara Manual dalam PHP untuk Permintaan PUT?

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

Barbara Streisand
Barbara Streisandasal
2024-10-28 06:47:02911semak imbas

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>

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!

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