Catatan: Unggah dengan AJAX, file tidak bisa terlalu besar, yang terbaik adalah kurang dari tiga atau empat ratus triliun, karena permintaan AJAX kontinu yang berlebihan akan runtuh latar belakang, dan data dalam inputstream akan kosong, terutama selama Google tes browser.
1. File Bacaan Segmen Sederhana adalah Blob, Ajax mengunggah ke server
<Div class = container> <div class = panel panel-default> <v class = panel-heading> File membaca: < / div> <div class = panel-body> <input type = file id = file /> <blockquote style = word-break: break-all;> </clockquote> </div> </div> </div>
JS:
/** File segmentasi adalah gumpalan, dan diunggah ke server* segmen untuk mengunggah file EXE dengan Ajax akan melempar pengecualian* /var fileBox = document.getElementById ('file'); 0]; ; {Console.info ('dimuat:' + culoaded + 'saat ini:' + dimuat); 'Total:' + (Tanggal baru (). GetTime () - StartTime.getTime ()) / 1000); // Tentukan posisi awal dan posisi akhir membaca file //console.info_start: ' + mulai); (Blob);} // Mulai membaca ReadBlob (0); server fd = formdata baru (); ); var data = eval (' + xhr.Responsetext +');
Kode Latar Belakang:
/// <summary> /// unggah2 instruksi abstrak /// </summary> unggah kelas publik2: ihttphandler {loghelper.loghelper_log = new Loghelper.loghelper (); = Konteks; ; .Toint32 (req.form [dimuat]); _file.inputstream; if (stream.length <= 0) Lempar pengecualian baru (data penerima tidak dapat kosong); ); WriteLine (TotalCount + DataOne.length) .tring ()); Return true;}}
2. Baca file dalam bagian untuk gumpalan, dan unggah ke server dengan Ajax.
<Div class = container> <div class = panel panel-default> <v class = panel-heading> File membaca: < / div> <div class = panel-body> <input type = file id = file / <br /> Jenis input = Nilai Tombol = Stop Onclight = STOP (); /Progress> <blockquote id = status style = word-break: break-all;> </lockquote> </div> </div>
JS:
/** File Segmentasi adalah gumpalan, dan mengunggahnya ke server oleh Ajax* Gunakan Ajax untuk mengirimkan ukuran file data yang diunggulkan. Koneksi panjang atau WebSocket */var fileBox = document.getElementById ('file'); NULL; ); E.Loaded; if (enableread == false) return false; -Current: ' + Loaded); // 如果没有读完 , 继续 Culoaded + = Loaded; ). Value = persen;});} // Mulai membaca ReadBlob (0); ; Posting ', ../ashx/upload2.ashx', true); (xhr.status == 500) {//console.info ('Kesalahan permintaan,' + xhr.Responsetext); }} // Tentukan posisi awal, baca fungsi file readblob (start) {// Tentukan posisi awal dan posisi akhir, baca file var blob = file.slice (start, start + step); );} // Tangguhkan fungsi stop () {// console.info ('stop, culoaded:' + culoaded); Lanjutkan, Culoaded: ' + Culoaded);
Kode latar belakang dengan di atas
3. Baca file dalam bagian ke array biner, dan unggah ke server dengan Ajax
Penggunaan array biner sangat rendah, dan file akhir sedikit menyimpang dengan ukuran aslinya
Konten HTML sama seperti di atas
JS:
/** Seg Segmented Reading adalah array biner, dan unggah ke server oleh Ajax untuk menggunakan metode transmisi menggunakan array biner. = Document.getElementById ('File'); Baca Total Number Var Foot = NULL; ) Jika nilai ditetapkan beberapa kali, data akan hilang Tanggal baru (); // Baca pembaca yang sukses. / Unggah Data Segmen ke Server UngloadFile (hasil, cuload ed, function () {console.info ('dimuat:' + culoaded + '---- saat ini:' + dimuat); // jika belum selesai, lanjutkan Culoaded + = Dimuat; if (culoaded <total) {oaded);} else {console.log ('Total waktu:' + (tanggal baru (). GetTime () - startTime.getTime ()) /1000); } // Tampilkan Progress = (Culoaded / Total) * 100; Mulai Membaca. server fd = baru untuk mdata (); (); {// console.info (xhr.responsetext); / Mulai mengirim xhr.send (fd);}} // Tentukan posisi awal. , Culoaded: + Culoaded);
Kode Latar Belakang:
/// <summary> /// unggah3 Instruksi abstrak /// </summary> Upload kelas publik3: ihttphandler {loghelper.loghelper_log = new Loghelper.loghelper (); = Konteks; (Q)). '). adalah tipe int, masalah terbesar adalah 1.9999999990686774g int loaded = convert.toint32 (req.form [dimuat]); ; fs.write (dataOne, 0, dataOne.length);} akhirnya {fs.close ();} _log.writeLine); Writestr (string str) {httpcontext.Response.write (str);} public bool isre dapat digunakan {get {return false;}}}Meringkaskan
Di atas adalah html5 file domain+filerereader file dan mengunggahnya ke server. Terima kasih banyak atas dukungan Anda untuk situs web VEVB Wulin!