従来のHTTPアプリケーションで複数のファイルをアップロードし、アップロードの進捗状況は非常に厄介なものです。ドキュメントの一部も非常に便利です。WebsocketのファイルHTML5の送信は、WebSocetを組み合わせて、マルチファイルアップロードアプリケーションを同時に実装します。
機能を実装しますおそらく、必要な関数をプレビューします。
主な機能は、ユーザーがフォルダーのファイルをWebページに直接ドラッグアンドドロップしてアップロードできることです。
FileInfoクラスパッケージファイル情報の読み取りを容易にするために、簡単なファイル情報読み取りオブジェクトクラスが元のファイルの基礎にカプセル化されます。
fileInfo(pagesize){file.size; Pages.uploaderror。 16); loadcallback = null; lse {this.pages = math.floor(this.size / this.pagesize);}} fileinfo.reset = function {this.pageIndex = 0; function(){var binary = 'var bytes = new uint8aray(this.databuffer)var len = bytes.bytelength; i])} window.btoa(binary);} fileinfo.prototype.onloaddata = function {var obj = evt.target [tag]; databuffer = evt .target.result; if(obj.loadcallback!= null)obj.loadcallback(obj);} else {if(obj.uploaderror!= null)obj.uploaderror(fi、evt.target.er ror); }} fileInfo.load = function {this.loadcallback = null || reader [this] onloadnd = this.size -size * this.pagesize; count; Channel = file._Channel; }} function(result){result.status == null || result.status == undefined){pageindex ++; if(file.pageIndex <file.pages){file.load(file.onuploaddata);}} else {if(file.uploaderror!= null)file.uploaderror(file、data.status);}); = function(channel、url){var fi = this; if(if(if(if result.status == null || result.status == undefined){fi._channel = channel; fi._url = result.data; fi.load(fi.onuploaddata);} else {if if (file。uploaderror!= null)file.uploaderror(fi、result.status);}});};}
クラスの処理は、ファイルの初期化を介して初期化されており、もちろんページ数やページのサイズを指定しています。 WebSocketでサーバーに送信します。
ファイルドラッグアンドドロップHTML5では、HTML5で複雑なことを行う必要はありません。
function ondragenter(e){e.StopPropagation(); (e){E.StopPropagation(); (「丸い」)
オンドロッププロセス中に関連するドラッグアンドドロップファイルを取得する必要があります。
現時点では、選択したファイルに関連するFileINFOオブジェクトを作成し、アップロードメソッドを呼び出す必要があります。
function onfileopen(files){if(files.length> 0){for(var i = 0; i <files.length; i ++){var info = new fileinfo(files [i]、32768); ;
uploadprocessイベントを介してアップロードファイルの進行情報を更新する
function onuploadprocess(file){$( '#p_' + file.id).progressbar({value:(file.pageindex / file.pages) * 100、text:file.filename + ' + fi le.uploadbytes +' / ' / fi ' + file.size +'] '});}C#サービス側
BeetleのWebSocketのサポートの助けを借りて、対応するサーバーの実装は非常に簡単です
/// <summary> /// Copyright©Henryfan 2012 /// Createtime:2012/12/14 21:13:34 /// </summary> public class Handler {public void uploadpackage(String fileid、int pageindex、int intページ、string base64data){console.writeline(fileid:{2}、pageindex:{0} pages:{1} datalength:{3}、pageindex、fileid、base64data.lengt h);} public string uploadfile(string fileid、 string filename、console.writeline(fileid:{2}、{0} size:{1}、size、fileid);
サーバーにはファイルリクエストをアップロードする方法に2つあり、アップロードファイルブロック受信方法があります。
要約しますマルチファイルアップロード機能を実現するために上記のコードのみが必要です。JSONはアップロードされた情報を処理するため、WebSocketが閲覧および送信するためにファイルストリームが実行される必要があります。 Mask Plus Plus Plus Plusの損失は、実際には比較的重いです。
コードをダウンロード:websocketupload.rar
上記は、この記事のすべての内容です。