麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > HTML5 > 正文

HTML5實現文件斷點續傳的方法

2024-09-05 07:21:53
字體:
來源:轉載
供稿:網友

HTML5的FILE api,有一個slice方法,可以將BLOB對象進行分割。前端通過FileList對象獲取到相應的文件,按照指定的分割方式將大文件分段,然后一段一段地傳給后端,后端再按順序一段段將文件進行拼接。

斷點續傳原理

目前比較常用的斷點續傳的方法有兩種,一種是通過websocket接口進行文件上傳,另一種是通過ajax,兩種方法各有千秋,雖然websocket聽起來比較高端些,但是除了用了不同的協議外其他的算法基本上都是很相似的,并且服務端要開啟ws接口,這里用相對方便的ajax來說明斷點上傳的思路。

說來說去,斷點續傳最核心的內容就是把文件“切片”然后再一片一片的傳給服務器,但是這看似簡單的上傳過程卻有著無數的坑。

首先是文件的識別,一個文件被分成了若干份之后如何告訴服務器你切了多少塊,以及最終服務器應該如何把你上傳上去的文件進行合并,這都是要考慮的。

因此在文件開始上傳之前,我們和服務器要有一個“握手”的過程,告訴服務器文件信息,然后和服務器約定切片的大小,當和服務器達成共識之后就可以開始后續的文件傳輸了。

前臺要把每一塊的文件傳給后臺,成功之后前端和后端都要標識一下,以便后續的斷點。

當文件傳輸中斷之后用戶再次選擇文件就可以通過標識來判斷文件是否已經上傳了一部分,如果是的話,那么我們可以接著上次的進度繼續傳文件,以達到續傳的功能。

文件的前端切片

有了HTML5 的 File api之后切割文件比想象的要簡單的多。

只要用slice 方法就可以了

var packet = file.slice(start, end);

參數start是開始切片的位置,end是切片結束的位置 單位都是字節。通過控制start和end 就可以是實現文件的分塊

如:

file.slice(0,1000); file.slice(1000,2000); file.slice(2000,3000); // ......

文件片段的上傳

上一部我們通過slice方法把文件分成了若干塊,接下來要做的事情就是把這些碎片傳到服務器上。

這里我們用ajax的post請求來實現

var xhr = new XMLHttpRequest(); var url = xxx // 文件上傳的地址 可以包括文件的參數 如文件名稱 分塊數等以便后臺處理 xhr.open('POST', url, true); xhr.onload = function (e){      // 判斷文件是否上傳成功,如果成功繼續上傳下一塊,如果失敗重試該快 } xhr.upload.onprogress = function(e){      // 選用 如果文件分塊大小較大 可以通過該方法判斷單片文件具體的上傳進度      // e.loaded  該片文件上傳了多少      // e.totalSize 該片文件的總共大小 } xhr.send(packet);

文件上傳到后臺后,后臺程序如PHP會做出相應的處理。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产亚洲精久久久久久蜜臀 | 爱福利视频 | 精品亚洲va在线va天堂资源站 | 国产亚洲精品成人 | 欧美日韩夜夜 | 一级黄色在线观看 | 全视频tv | 亚州综合网 | 久久久久电影网站 | 男人的天堂视频网站 | 国产精选电影免费在线观看网站 | 精品亚洲午夜久久久久91 | 久久亚洲精品国产一区 | 久久久久久免费 | 免费看毛片网站 | 久草在线免费资源站 | 成人宗合网 | 欧美18—19sex性护士中国 | 一区二区三区播放 | 水卜樱一区二区av | 久久成人精品视频 | 午夜影院a | 福利在线播放 | 中文字幕在线免费 | 黄色成人在线播放 | 调教小男生抽打尿孔嗯啊视频 | 欧美日韩精品一区二区三区不卡 | 失禁高潮抽搐喷水h | 日韩精品中文字幕在线播放 | 日韩视频不卡 | 色婷婷久久一区二区 | 日本高清一级片 | 欧美黄色试片 | 黄色大片网站在线观看 | 日韩剧情片 | 91社区在线观看 | 免费一级在线观看 | 久久午夜国产 | 国产成视频在线观看 | 亚洲精品无码不卡在线播放he | 一级毛片在线免费观看视频 |