婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Html5大文件斷點續傳實現方法

Html5大文件斷點續傳實現方法

熱門標簽:申請400電話流程簡介 外呼線穩定線路 pageadm實現地圖標注 地圖標注位置能賺錢嗎 外呼系統電話怎么投訴 邢臺縣地圖標注app 南通數據外呼系統推廣 阜陽企業外呼系統 呼和浩特外呼電銷系統排名
大文件分塊

一般常用的web服務器都有對向服務器端提交數據有大小限制。超過一定大小文件服務器端將返回拒絕信息。當然,web服務器都提供了配置文件可能修改限制的大小。針對iis實現大文件的上傳網上也有一些通過修改web服務器限制文件大小來實現。不過這樣對web服務器的安全帶了問題。攻擊者很容易發一個大數據包,將你的web服務器直接給拖死。
現在針對大文件上傳主流的實現方式,通過將大文件分塊。比如針對一個100M文件,按2M拆分為50塊。然后再將每塊文件依次上傳到服務器上,上傳完成后再在服務器上合并文件。
在web實現大文件上傳,核心主要實現文件的分塊。在Html5 File API 出現以前,要想在web上實現文件分塊傳輸。只有通過flash或Activex實現文件的分塊。

在Html5 下,我們可以直接通過file的slice 方法來實現文件的分塊。如:

XML/HTML Code復制內容到剪貼板
  1. file.slice(0,1000);    
  2. file.slice(1000,2000);    
  3. file.slice(2000,3000);  
然后再通過XMLHttpRequest異步上傳到服務器。

Html5 上傳文件類庫

如果你有興趣及時間 ,當然可以自己用html5的File API來實現。本人在網上查找到了以下兩個支持html5類庫。
resumable.js 附git上的地址:https://github.com/23/resumable.js
Pludload http://plupload.com/

resumable是一個純html5上傳類庫。
而Pludload是一個支持html5,flash,silverlight,html4,它會自動判斷瀏覽是否支持html5不支持將用其它的上傳方式。
我測試下來,resumable和Pludload都支持html5分塊上傳文件。用下來覺得resumable比較適合,以下就選resumable來進行介紹。

resumable.js斷點上傳使用介紹

主要配置介紹:
JavaScript Code復制內容到剪貼板
  1. var r = new Resumable({   
  2.             target:'/test/upload',   
  3.             chunkSize:1*1024*1024,   
  4.             simultaneousUploads:4,   
  5.             testChunks: true,   
  6.             throttleProgressCallbacks:1,   
  7.             method: "octet"  
  8.           });  
chunkSize 分塊文件大小,以字節為單位
simultaneousUploads 同時上傳文件塊的進程數,可以同時允許多個文件塊上傳。
testChunks 上前文件塊是否先通過get方式發送文件信息檢測文件是否已經上傳。

resumable斷點上傳是通過testChunks配置節點來實現,當設置為true時。resumable會先發送一個get請求,如果http狀態返回 200。則認為當前塊已經上傳完成,然后進行下一塊的get請求。如果http狀態返回的不是200,則將通過post方式發送當前塊數據包進行文件塊上傳。

設置testChunks為true每次上傳都會增加一個get請求,如果我們已經知道上次中斷上傳前文件的塊數。下次直接從中斷的塊數上傳就行了。這樣可以為每個塊減少一次http的get請求。
針對這個需求,我修改了resumable的源碼,為resumable里的file對象增加了一個startchunkindex的屬性,默認為0。用于設置當前文件從哪一個塊開始上傳。這樣,我們只需要在在文件上傳前從服務器上進行一次查詢(查詢當前文件上傳到哪一塊),返回上次上傳的文件塊索引。再將索引值設置到file的startchunkindex屬性就可以實現從上次斷開的文件塊開始上傳。
調用方式:

JavaScript Code復制內容到剪貼板
  1. // Handle file add event   
  2.               r.on('fileAdded'function (file) {   
  3.                   file.startchunkindex = 0; // 設置當前文件開始上傳的塊數  
具體可以查看附件里的demo。

收尾工作

所有文件塊上傳完,最后工作就是合并保存文件。附件為resumable斷上傳.net實現的服務端例子,包括簡單的文件合并功能。其它語言的demo大家也可以從resumable的git上下載。
demo例子為了簡單,只是把文件存放在本機。在真實的生產環境中。一般應該放在單獨的文件服務器上(前臺web通過ftp或文件夾共享方式上傳到文件服務器),然后對上傳好的文件進行分發鏡像或處理(比如視頻壓縮)。當然最好是存在分布式文件系統中,目前看下來放到Hadoop分布式文件系統(HDFS)是一個不錯的好方案。

demo

Vs2012 Html5 Upload demo下載

標簽:蚌埠 德州 楊凌 辛集 撫順 黃山 鶴崗 內蒙古

巨人網絡通訊聲明:本文標題《Html5大文件斷點續傳實現方法》,本文關鍵詞  Html5,大,文件,斷點,續傳,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Html5大文件斷點續傳實現方法》相關的同類信息!
  • 本頁收集關于Html5大文件斷點續傳實現方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 义乌市| 怀来县| 信阳市| 隆尧县| 苏尼特右旗| 六枝特区| 扎赉特旗| 蓝山县| 富平县| 大新县| 平阳县| 长治县| 闸北区| 胶州市| 洮南市| 肃宁县| 阿拉善盟| 巩留县| 申扎县| 银川市| 阜新| 通榆县| 栖霞市| 普兰店市| 沈丘县| 苍梧县| 商丘市| 清流县| 云南省| 嘉峪关市| 儋州市| 永胜县| 宁阳县| 全州县| 托克托县| 东至县| 宁安市| 锦州市| 英德市| 句容市| 沁源县|