1. Gambaran Keseluruhan
Pada masa lalu, mengakses fail tempatan adalah pening untuk aplikasi berasaskan penyemak imbas. Walaupun JavaScript memainkan peranan yang semakin penting dengan pembangunan berterusan teknologi aplikasi Web 2.0, disebabkan pertimbangan keselamatan, JavaScript sentiasa tidak dapat mengakses fail tempatan. Oleh itu, untuk melaksanakan fungsi seperti menyeret dan memuat naik fail tempatan dalam penyemak imbas, kami perlu menggunakan pelbagai teknologi yang disediakan oleh penyemak imbas tertentu. Sebagai contoh, untuk IE, kita perlu menggunakan kawalan ActiveX untuk mendapatkan akses kepada fail tempatan, dan untuk Firefox, kita juga perlu menggunakan pembangunan pemalam. Memandangkan pelaksanaan teknikal penyemak imbas yang berbeza adalah berbeza, agar program ini menyokong berbilang penyemak imbas, program kami akan menjadi sangat kompleks dan sukar untuk diselenggara. Tetapi kini, semua ini telah diubah sepenuhnya kerana kemunculan API Fail.
API Fail ialah draf yang diserahkan oleh Mozilla kepada W3C, bertujuan untuk melancarkan satu set API JavaScript standard Fungsi asasnya ialah mengendalikan fail tempatan dengan JavaScript. Atas sebab keselamatan, API ini hanya menyediakan akses terhad kepada fail tempatan. Dengan itu, kami boleh menggunakan JavaScript tulen untuk membaca dan memuat naik fail setempat dengan mudah. Pada masa ini, FireFox 3.6 ialah pelayar pertama yang menyokong ciri ini. Selain itu, versi terkini pelayar Google Chrome dan Safari juga mempunyai sokongan yang sepadan. API Fail dijangka menjadi sebahagian daripada spesifikasi HTML 5 masa hadapan yang sedang dibangunkan oleh W3C.
2. Gambaran Keseluruhan API Fail
API Fail terdiri daripada satu set objek dan peristiwa JavaScript. Memberi pembangun keupayaan untuk memanipulasi fail yang dipilih dalam Rajah 1 menunjukkan hubungan gabungan semua JavaScript dalam API Fail.
Taip FileList mengandungi satu set objek Fail. Biasanya objek FileList boleh diambil dari medan fail () dalam borang. Objek Blob mewakili satu set aliran binari mentah yang boleh dibaca oleh penyemak imbas. Dalam objek Blob, atribut saiz mewakili saiz strim. Fungsi slice() boleh membelah objek Blob panjang kepada kepingan kecil. Objek Fail mewarisi daripada objek Blob, dan atribut berkaitan Fail ditambahkan pada objek Blob. Antaranya, nama atribut mewakili nama fail Nama ini mengalih keluar maklumat laluan fail dan hanya mengekalkan nama fail. Atribut jenis mewakili jenis MIME fail. Urn atribut mewakili maklumat URN fail ini. Untuk melengkapkan operasi membaca fail, contoh objek FileReader dikaitkan dengan objek Fail atau Blob dan menyediakan tiga fungsi membaca fail dan 6 peristiwa yang berbeza.
Kandungan khusus fungsi membaca fail:
readAsBinaryString() Baca kandungan fail dan hasil baca ialah rentetan binari. Setiap bait fail akan diwakili sebagai integer dalam julat [0..255]. Fungsi ini menerima objek Fail sebagai parameter.
readAsText() Baca kandungan fail dan hasil baca ialah rentetan teks yang mewakili kandungan fail. Fungsi ini menerima objek Fail dan nama pengekodan teks sebagai parameter.
readAsDataURL Baca kandungan fail dan hasil baca ialah data: URL. DataURL ditakrifkan oleh RFC2397.
Kandungan khusus acara membaca fail:
Nama Acara Penerangan Acara
Onloadstart Dicetuskan apabila bacaan fail bermula.
Kemajuan Dicetuskan dengan kerap apabila bacaan sedang dijalankan. Parameter acara akan mengandungi jumlah keseluruhan data yang dibaca.
Batalkan Dipecat apabila bacaan dibatalkan.
Ralat Dicetuskan apabila ralat membaca berlaku.
Muat Dicetuskan apabila bacaan selesai dengan jayanya.
Loadend Akan dicetuskan apabila bacaan selesai, tanpa mengira kejayaan atau kegagalan.
3. Contoh mudah API Fail
Seterusnya, kami menggunakan contoh mudah untuk menunjukkan penggunaan asas API Fail. Contoh ini mengandungi dua fail kod, index.html mengandungi kod HTML di bahagian web dan kod JavaScript untuk memproses muat naik.jsp mengandungi kod pada bahagian pelayan untuk menerima fail yang dimuat naik. Sila lihat sourcecode.zip dalam lampiran. Dalam contoh ini, kami akan memaparkan bentuk tradisional dengan medan pemilihan Fail. Apabila pengguna memilih fail dan mengklik hantar, kami menggunakan API Fail untuk membaca kandungan fail dan memuat naik fail ke pelayan menggunakan Ajax melalui objek XMLHttpRequest. Rajah 2 menunjukkan tangkapan skrin demo sedang beraksi.
Kami menunjukkan kod langkah demi langkah. Penyenaraian 1 menunjukkan bahagian HTML kod.
Bahagian HTML kod contoh Penyenaraian 1
<body> <h1>File API Demo</h1> <p> <!-- 用于文件上传的表单元素 --> <form name="demoForm" id="demoForm" method="post" enctype="multipart/form-data" action="javascript: uploadAndSubmit();"> <p>Upload File: <input type="file" name="file" /></p> <p><input type="submit" value="Submit" /></p> </form> <div>Progessing (in Bytes): <span id="bytesRead"> </span> / <span id="bytesTotal"></span> </div> </p> </body>
Seperti yang anda lihat, kami menggunakan teg