久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

HTML5實(shí)現(xiàn)文件斷點(diǎn)續(xù)傳的方法

這篇文章主要介紹了HTML5實(shí)現(xiàn)文件斷點(diǎn)續(xù)傳的方法,斷點(diǎn)續(xù)傳的原理分析,本文給大家介紹的非常詳細(xì),需要的朋友參考下

HTML5的FILE api,有一個(gè)slice方法,可以將BLOB對(duì)象進(jìn)行分割。前端通過(guò)FileList對(duì)象獲取到相應(yīng)的文件,按照指定的分割方式將大文件分段,然后一段一段地傳給后端,后端再按順序一段段將文件進(jìn)行拼接。

斷點(diǎn)續(xù)傳原理

目前比較常用的斷點(diǎn)續(xù)傳的方法有兩種,一種是通過(guò)websocket接口進(jìn)行文件上傳,另一種是通過(guò)ajax,兩種方法各有千秋,雖然websocket聽(tīng)起來(lái)比較高端些,但是除了用了不同的協(xié)議外其他的算法基本上都是很相似的,并且服務(wù)端要開(kāi)啟ws接口,這里用相對(duì)方便的ajax來(lái)說(shuō)明斷點(diǎn)上傳的思路。

說(shuō)來(lái)說(shuō)去,斷點(diǎn)續(xù)傳最核心的內(nèi)容就是把文件“切片”然后再一片一片的傳給服務(wù)器,但是這看似簡(jiǎn)單的上傳過(guò)程卻有著無(wú)數(shù)的坑。

首先是文件的識(shí)別,一個(gè)文件被分成了若干份之后如何告訴服務(wù)器你切了多少塊,以及最終服務(wù)器應(yīng)該如何把你上傳上去的文件進(jìn)行合并,這都是要考慮的。

因此在文件開(kāi)始上傳之前,我們和服務(wù)器要有一個(gè)“握手”的過(guò)程,告訴服務(wù)器文件信息,然后和服務(wù)器約定切片的大小,當(dāng)和服務(wù)器達(dá)成共識(shí)之后就可以開(kāi)始后續(xù)的文件傳輸了。

前臺(tái)要把每一塊的文件傳給后臺(tái),成功之后前端和后端都要標(biāo)識(shí)一下,以便后續(xù)的斷點(diǎn)。

當(dāng)文件傳輸中斷之后用戶再次選擇文件就可以通過(guò)標(biāo)識(shí)來(lái)判斷文件是否已經(jīng)上傳了一部分,如果是的話,那么我們可以接著上次的進(jìn)度繼續(xù)傳文件,以達(dá)到續(xù)傳的功能。

文件的前端切片

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

只要用slice 方法就可以了

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

參數(shù)start是開(kāi)始切片的位置,end是切片結(jié)束的位置 單位都是字節(jié)。通過(guò)控制start和end 就可以是實(shí)現(xiàn)文件的分塊

如:

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

文件片段的上傳

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

這里我們用ajax的post請(qǐng)求來(lái)實(shí)現(xiàn)

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

文件上傳到后臺(tái)后,后臺(tái)程序如PHP會(huì)做出相應(yīng)的處理。

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過(guò)測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

這篇文章主要介紹了有關(guān)HTML5頁(yè)面在iPhoneX適配問(wèn)題,需要的朋友可以參考下
本篇文章主要介紹了html5中canvas圖表實(shí)現(xiàn)柱狀圖的示例,本文使用canvas來(lái)實(shí)現(xiàn)一個(gè)圖表,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
Adobe公司出品的多媒體處理軟件產(chǎn)品線較多,涵蓋了音視頻編輯、圖像處理、平面設(shè)計(jì)、影視后期等領(lǐng)域。這篇文章主要介紹了Adobe Html5 Extension開(kāi)發(fā)初體驗(yàn)圖文教程,非常不錯(cuò),需要的朋
這篇文章主要介紹了基于HTML5的WebGL經(jīng)典3D虛擬機(jī)房漫游動(dòng)畫(huà),需要的朋友可以參考下
這篇文章主要介紹了html5實(shí)現(xiàn)移動(dòng)端適配完美寫(xiě)法,需要的朋友可以參考下
本篇文章主要介紹了HTML5響應(yīng)式(自適應(yīng))網(wǎng)頁(yè)設(shè)計(jì)的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
主站蜘蛛池模板: 久久国产福利 | 精品久久久久久国产 | 久久国 | 午夜免费福利影院 | 伊人网伊人| 国产在线观看一区二区三区 | 欧美精品一区二区三区在线播放 | 国产成人午夜精品影院游乐网 | 青青草原综合久久大伊人精品 | 亚洲在线看 | 一区二区在线观看免费视频 | 国产成人精品一区二 | 久久久久久久久久久久久91 | 亚洲免费在线 | 国产成人免费网站 | 午夜精品一区二区三区在线观看 | 成人av电影网 | 久久99精品久久久久婷婷 | 国产欧美在线观看 | 日韩手机在线看片 | 国产精品久久久久久亚洲调教 | 在线一区 | 国产真实乱对白精彩久久小说 | 成人精品一区二区三区中文字幕 | 特黄一级| 国产一区二区三区四区 | 国产精品中文字幕一区二区三区 | 日本不卡在线观看 | 国产精品精品久久久 | 亚洲欧美成人影院 | 欧美午夜精品久久久久久浪潮 | 中文精品一区二区 | 成人免费在线视频 | 欧美日日| 中国一级特黄视频 | 日韩中文视频 | 精品视频在线播放 | 你懂的在线视频播放 | 国产精品一区二区在线 | 51ⅴ精品国产91久久久久久 | 亚洲一级二级三级 |