注:ajaxでアップロードすると、ファイルが大きすぎることはできません。300兆または400兆未満であることが最善です。ブラウザテスト。
1.単純なセグメント読み取りファイルはBLOB、AJAXはサーバーにアップロードされます
<div class = container> <div class = panel panel-default> <div class = panel-heading>読み取りファイル:< / div> <div class = panel-body> <input type = file id = file /> <blockquote style = word-break:break-all;> </blockquote> </div> </div> </div>
JS:
/**セグメンテーションファイルはブロブであり、ajaxを使用してexeファイルをアップロードするためにサーバーにアップロードされます* /var filebox = document.getElementbyid( 'file'); 0]; ; //成功したreader.onload = function(e){// read ready = e.loaded; {console.info( 'loaded:' + culoaded 'current:' + loaded); 'Total:' +(new date() - starttime.gettime() / 1000); // inded wosition wose read file //console.info_start: ' + blob = file.slice(start、start、start、start、start + step); (blob);} // readblob(0)を開始しますサーバーfd = new formdata(); )xhr.open( 'post'、 '../ashx/upload2.ashx'、true); var data = eval( ' + xhr.responsetext +'); info(xhr.r.responsetext);
背景コード:
// <summary> /// upload2要約</summary> public class upload2:ihttphandler {loghelper.loghelper_log = new loghelper.loghelper(); = Context; ; //パラメーターを取得する// req.form = req.form [ファイル]; .toint32(loaded]; _file.inputStream(stream.length <= 0)は、dataine byte = new byte [stream.length]; ); newName、fileaCcess.write、fileshare.read、1024); WriteLine(TotalCount + DataNe.length).Tring()); trueを返す;}}
2。セクションのファイルをBLOBに読み取り、AJAXを使用してサーバーにアップロードします。
<div class = container> <div class = panel panel-default> <div class = panel-heading>読み取りファイル:< / div> <div class = panel-body> <input type = file id = file /> <br /> <入力タイプ= stop onclight = stop(); /Progress> <blockquote id = status style = word-break:break-all;> </blockquote> </div> </div>
JS:
/**セグメンテーションファイルは、Ajaxを使用して、Ajaxを使用して、500MB以内になります。長い接続またはvar filebox.getElementbyid( 'file'); null; )var starttime = new filead Errand(); e.loaded; if(enableread == false)false、result、culoaded、function(){console.info( 'loaded:' + culoaded + '--- -current: ' + loaded); )getTime() / 1000); value =パーセント;});} // readblob(0)を開始します。 ; fd.append(filename '、file.name); post '、' ../ashx/upload2.ashx '、true); (xhr.status == 500){//console.info( 'request error、' + xhr.responsetext); }} //開始位置を指定し、ファイル関数readblob(start)を読み取ります{// file var blob = file.slice(start、start + step)を読み取ります);} // function stop(){// console.info( 'stop、culoaded:' + culoaded);続行、 ' + culoaded);
上記の背景コード
3.セクションのファイルをバイナリアレイに読み、AJAXを使用してサーバーにアップロードします
バイナリアレイの使用は特に低く、最終ファイルは元のサイズに少し逸脱しています
HTMLコンテンツは上記と同じです
JS:
/**セグメント化された読み取りファイルはバイナリアレイであり、バイナリアレイを使用して送信する方法を使用してサーバーにアップロードします。 = document.getElementByid( 'file');総数var foot = null; )//データは複数回割り当てられますnew Date()は、成功したreader.onload(e){read = reader.result; /セグメントデータをサーバーにアップロードしますuploadFile(result、cuload ed、function(){console.info( 'loaded:' + culoaded + '---- current:' + loaded); //終了していない場合は、culoaded +を続行します= loaded; if(culoaded <total);} else {console.log: ' +(new date()。 } //結果の進行状況=(合計) * getelementbyid( 'status')読み取りを開始しますサーバーfd = mdata(); (); xhr.open( 'post'、../as。hx/ upload3.ashx '、true); {// console.info(xhr.responsetext); if(onsuccess)onsuccess;} / xhr.send(fd);}} // file funch readblobを指定します{//開始位置とend位置を指定します、culoaded: ' + culoaded);
背景コード:
// <summary> /// upload3要約</summary> public class upload3:ihttphandler {loghelper.loghelper_log = new loghelper.loghelper(); = Context; (Q)。 '、')。 INTタイプは、最大の問題は1.999999990686774G int loaded.toint32(req.form [loaded]); ; NewName += FileName {/ fs.write(dataone、0、dataone.length);}最後に{fs.close();} _log.writeline(セグメント化されたデータを正常に保存);} catch(Exception ex;}} private void writestr(string str){httpcontext.response.write(str);} public bool isre usable {get {return false;}}}}要約します
上記は、HTML5ドメイン+ファイルを読み取り、サーバーにアップロードします。 VEVBウーリンのウェブサイトへのご支援ありがとうございます!