FormData adalah pengenalan dan penggunaan terperinci https://developer.mozilla.org/zh ... ng_FormData_Objects
Metode dan peristiwa FormData sudah sangat jelas di sana, jadi saya tidak akan membuang waktu untuk mereka di sini. Artikel ini terutama menjelaskan penggunaan objek FormData dan unggahan file asinkron.
Objek FormData memungkinkan kita untuk mengatur kumpulan pasangan kunci-nilai yang dikirim menggunakan objek XMLHttpRequest. Ini terutama digunakan untuk mengirim data formulir, tetapi dapat digunakan secara independen dari data yang ditransfer menggunakan formulir.
1. Buat objek FormData dari awal
Anda dapat membuat objek FormData Anda sendiri dan kemudian menambahkan pasangan kunci-nilai ke objek melalui metode append(), seperti ini:
Catatan: Bidang "userfile" dan "webmasterfile" berisi file. Nomor yang ditetapkan ke bidang "accountnum" langsung dikonversi menjadi string oleh metode FormData.append() (nilai bidang dapat berupa blob, file, atau string: jika nilainya bukan blob atau file, nilainya dikonversi menjadi string). Contoh ini membuat instance FormData dengan bidang "username", "accountnum", "userfile" dan "webmasterfile", lalu menggunakan metode send() objek XMLHttpRequest untuk mengirim data formulir. Bidang "webmasterfile" adalah blob. Objek blob mewakili data mentah dari objek file. Tetapi data yang diwakili oleh blob tidak harus dalam format asli javascript. Antarmuka file didasarkan pada blob, mewarisi fungsionalitas blob dan memperluas dukungannya untuk sistem file pengguna. Untuk membangun blob, konstruktor Blob() dapat dipanggil.
2. Dapatkan objek FormData dari formulir HTML
Untuk mendapatkan objek FormData yang berisi data formulir yang ada, Anda perlu menentukan elemen formulir saat membuat objek FormData.
Seperti ini:
Anda juga dapat menambahkan data tambahan setelah mendapatkan objek FormData, seperti ini:
Ini memungkinkan Anda menambahkan informasi tambahan sebelum mengirim, tidak harus diedit pengguna.
3. Gunakan objek FormData untuk mengirim file
Anda dapat menggunakan FormData untuk mengirim file. <form>Bagian tengah sederhana dapat <input>menyertakan elemen:
Anda kemudian dapat menggunakan kode berikut untuk mengirimkannya:
Anda juga dapat menambahkan File atau Blob langsung ke objek FormData, seperti ini:
Saat menggunakan metode append(), parameter ketiga dapat digunakan untuk mengirim nama file (dikirim ke server melalui header Content-Disposition). Jika parameter ketiga tidak ditentukan atau parameter ini tidak didukung, parameter ketiga default ke "blob".
Jika Anda mengatur opsi yang benar, Anda juga dapat menggunakannya dengan jQuery:
|