Rumah >hujung hadapan web >tutorial js >HTML5 Fail Drag, Drop, Analyze, Baca dan Muat naik
3Sudah seminggu yang sibuk. Kami telah menemui bagaimana API HTML5 baru dapat membantu kami membuka, membaca dan memuat naik fail yang pengguna diseret dan jatuh ke dalam tetingkap penyemak imbas. Artikel ini meringkaskan teknik dan tahap sokongan penyemak imbas semasa.
if (window.File && window.FileList && window.FileReader) { ... }
var xhr = new XMLHttpRequest(); if (xhr.upload) { ... attach drag and drop events ... }seret fail & drop
document.getElementById("fileselect").addEventListener("change", FileSelectHandler, false);
document.getElementById("filedrag").addEventListener("drop", FileSelectHandler, false);mengambil objek filelist
// cancel event default e.preventDefault(); // fetch FileList object var files = e.target.files || e.dataTransfer.files; // process all File objects for (var i = 0, file; file = files[i]; i++) { ... }Menganalisis objek fail
if (window.File && window.FileList && window.FileReader) { ... }Untuk maklumat lanjut, rujuk cara membuka fail yang diturunkan menggunakan HTML5 dan JavaScript.
var xhr = new XMLHttpRequest(); if (xhr.upload) { ... attach drag and drop events ... }Begitu juga, kaedah ReadAsDataurl () mengambil data imej binari sebagai URL data yang dikodkan yang boleh diserahkan kepada atribut SRC imej atau elemen kanvas:
document.getElementById("fileselect").addEventListener("change", FileSelectHandler, false);Untuk maklumat lanjut, rujuk cara membuka fail yang diturunkan menggunakan HTML5 dan JavaScript.
document.getElementById("filedrag").addEventListener("drop", FileSelectHandler, false);Perhatikan kami juga menghantar nama fail sebagai tajuk HTTP. Ini adalah pilihan, tetapi ia membolehkan kami mencipta semula fail menggunakan nama asalnya pada pelayan menggunakan bahasa seperti PHP:
// cancel event default e.preventDefault(); // fetch FileList object var files = e.target.files || e.dataTransfer.files; // process all File objects for (var i = 0, file; file = files[i]; i++) { ... }Untuk maklumat lanjut, rujuk bagaimana untuk memuat naik fail secara asynchronously menggunakan HTML5 dan AJAX.
// process image files under 300,000 bytes if (file.type.indexOf("image") == 0 && file.size < 300000) { ... }Pengendali menerima objek acara dengan .loaded (bilangan bait dipindahkan) dan .total (saiz fail) sifat. Oleh itu, kemajuan boleh dikira dan diserahkan kepada tag kemajuan HTML5 atau mana -mana elemen lain, mis.
if (file.type.indexOf("text") == 0) { var reader = new FileReader(); reader.onload = function(e) { // get file content var text = e.target.result; ... } reader.readAsText(file); }Untuk maklumat lanjut, rujuk bagaimana untuk membuat fail muat naik fail grafik bar dalam HTML5 dan JavaScript. Saya harap anda menikmati siri ini. Seret dan drop fail adalah ciri penting yang dapat mengubah kebolehgunaan aplikasi web. HTML5 akhirnya memudahkannya.
Bagaimana saya boleh membaca kandungan fail yang dijatuhkan? Pertama, anda perlu membuat objek FileReader baru. Kemudian, anda boleh menggunakan kaedah 'Readastext' atau 'ReadasDataurl' untuk membaca kandungan fail. Kaedah 'readastext' membaca fail sebagai rentetan teks, dan kaedah 'readasdataurl' membaca fail sebagai url data. Acara 'kemajuan' dipecat secara berkala apabila muat naik berlangsung. Dalam pengendali acara, anda boleh mengira peratusan kemajuan dan mengemas kini bar kemajuan dengan sewajarnya. Pastikan untuk menetapkan sifat 'muat naik' objek XMLHTTPREQUEST kepada Benar untuk membolehkan acara 'Kemajuan'. Setiap item dalam objek filelist adalah objek fail yang mewakili fail yang dijatuhkan. Anda boleh mengendalikan setiap fail secara individu, sebagai contoh, dengan membaca kandungannya atau memuat naiknya ke pelayan. Harta 'jenis' adalah rentetan yang mewakili jenis mime fail. Jika jenis fail tidak dibenarkan, anda boleh menghalang tindakan drop dengan memanggil kaedah 'pencegahan' objek acara dalam pengendali acara 'drop'.
Mengendalikan seretan dan drop acara untuk unsur -unsur bersarang boleh menjadi rumit kerana peristiwa -peristiwa gelembung ke atas pokok dom. Untuk mengelakkan elemen induk daripada menerima peristiwa seretan dan drop yang dimaksudkan untuk elemen kanak -kanak, anda boleh memanggil kaedah 'stoppropagation' objek acara dalam pengendali acara elemen kanak -kanak. dalam pengendali acara 'Dragleave' dan 'Drop'. Anda boleh menentukan penampilan kelas dalam CSS anda. Walau bagaimanapun, beberapa perpustakaan ujian, seperti selenium, menyediakan kaedah untuk mensimulasikan tindakan seret dan drop. Anda juga boleh membuat acara 'drop' mock dan menghantarnya ke elemen zon drop.
Atas ialah kandungan terperinci HTML5 Fail Drag, Drop, Analyze, Baca dan Muat naik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!