国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > HTML > 正文

斷點(diǎn)續(xù)傳原理是什么?怎么利用html5實(shí)現(xiàn)文件斷點(diǎn)續(xù)傳

2020-03-24 16:05:59
字體:
供稿:網(wǎng)友
HTML5的FILE api,有一個slice方法,可以將BLOB對象進(jìn)行分割。前端通過FileList對象獲取到相應(yīng)的文件,按照指定的分割方式將大文件分段,然后一段一段地傳給后端,后端再按順序一段段將文件進(jìn)行拼接。

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

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

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

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

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

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

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

文件的前端切片

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

只要用slice 方法就可以了

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

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

如:

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

文件片段的上傳

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

這里我們用ajax的post請求來實(shí)現(xiàn)

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

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

以上就是斷點(diǎn)續(xù)傳原理是什么?怎么利用html5實(shí)現(xiàn)文件斷點(diǎn)續(xù)傳的詳細(xì)內(nèi)容,其它編程語言

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 广东省| 太仆寺旗| 鹿泉市| 长春市| 文登市| 广南县| 株洲县| 昌黎县| 伊金霍洛旗| 汉沽区| 厦门市| 拉孜县| 刚察县| 富民县| 名山县| 云霄县| 西青区| 双柏县| 丰城市| 泽普县| 额济纳旗| 广宁县| 忻州市| 福泉市| 平舆县| 双桥区| 保山市| 龙里县| 怀安县| 临夏市| 华宁县| 开平市| 琼结县| 武冈市| 蕉岭县| 广安市| 和林格尔县| 镇江市| 木兰县| 虎林市| 湖州市|