摘要:實(shí)現(xiàn)協(xié)議實(shí)現(xiàn)文件斷點(diǎn)上傳關(guān)于協(xié)議提供一種基于和機(jī)制用于文件斷點(diǎn)續(xù)傳。請(qǐng)求請(qǐng)求當(dāng)前文件的服務(wù)器信息,返回文件大小和當(dāng)前進(jìn)度。請(qǐng)求上傳文件,寫入磁盤系統(tǒng)。是最簡(jiǎn)單的一個(gè)文件上傳頁(yè)面。參考文獻(xiàn)關(guān)于協(xié)議本文中用到的關(guān)于請(qǐng)求
Spring Boot實(shí)現(xiàn)TUS協(xié)議實(shí)現(xiàn)文件斷點(diǎn)上傳 關(guān)于Tus
TUS協(xié)議提供一種基于 HTTP/1.1 和 HTTP/2 機(jī)制用于文件斷點(diǎn)續(xù)傳。舉例
HEAD請(qǐng)求用來(lái)查詢某個(gè)文件上傳進(jìn)度使用
下面例子中一個(gè)文件總共100個(gè)Byte,已經(jīng)傳輸了70個(gè)Byte,所有交互內(nèi)容都在HTTP請(qǐng)求頭中。
HEAD Request:
HEAD /files/24e533e02ec3bc40c387f1a0e460e216 HTTP/1.1 Host: tus.example.org Tus-Resumable: 1.0.0
Response:
HTTP/1.1 200 OK Upload-Offset: 70 Tus-Resumable: 1.0.0
拿到Upload-Offset, 使用PATCH方式請(qǐng)求繼續(xù)傳輸文件的未完成部分。
PATCH Request:
PATCH /files/24e533e02ec3bc40c387f1a0e460e216 HTTP/1.1 Host: tus.example.org Content-Type: application/offset+octet-stream Content-Length: 30 Upload-Offset: 70 Tus-Resumable: 1.0.0 [remaining 30 bytes]
Response:
HTTP/1.1 204 No Content Tus-Resumable: 1.0.0 Upload-Offset: 100
以上就完成了傳輸。
請(qǐng)求類型
OPTIONS請(qǐng)求
主要是獲取協(xié)議描述,支持的各種參數(shù),協(xié)議細(xì)節(jié),其實(shí)tus使用Header來(lái)進(jìn)行服務(wù)器和客戶端信息交互,OPTIONS需要實(shí)現(xiàn)兩個(gè)Action,一個(gè)用于總的協(xié)議描述,另一個(gè)可以獲取到當(dāng)前文件的上傳進(jìn)度Offset。
POST請(qǐng)求
當(dāng)有新文件需要上傳時(shí)候,注冊(cè)文件信息,文件名,文件大小,這些內(nèi)容,tus-js-client的文件名是Base64格式的。
HEAD請(qǐng)求
請(qǐng)求當(dāng)前文件的服務(wù)器信息,返回文件大小和當(dāng)前進(jìn)度。
PATCH請(qǐng)求
上傳文件,寫入磁盤系統(tǒng)。
Get請(qǐng)求
下載文件,根據(jù)guid
DELETE請(qǐng)求
刪除文件大致流程
流程見(jiàn)下圖,不解釋了
客戶端客戶端本文使用js-tus-client項(xiàng)目,這個(gè)項(xiàng)目本地自行啟動(dòng),有node.js環(huán)境的,如下:
npm install -g http-server cd html http-server .
然后打開(kāi)瀏覽器8080端口,就可以看到頁(yè)面了。
Simple.html 是最簡(jiǎn)單的一個(gè)文件上傳頁(yè)面demo。
其他都是js-tus-client的內(nèi)容。
tus需要本地瀏覽器中存儲(chǔ)已經(jīng)上傳的文件信息,這些js-tus-client都已經(jīng)實(shí)現(xiàn)。
Github地址https://github.com/freew01f/t...
代碼都在這里了,這里就不解釋了,如果你想修改上傳的endpoint地址,你需要在POST方法創(chuàng)建時(shí)修改,因?yàn)檫@個(gè)url會(huì)存在本地瀏覽器中。
參考文獻(xiàn)關(guān)于TUS協(xié)議 https://tus.io/protocols/resu...
本文中用到的js client https://github.com/tus/tus-js...
關(guān)于OPTIONS請(qǐng)求 https://developer.mozilla.org...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/72522.html
摘要:為什么使用最近用到了來(lái)完成文件上傳的操作,踩了一些坑,對(duì)比了一些的組件,發(fā)現(xiàn)了一個(gè)很好用的組件再說(shuō)說(shuō)為什么選用這個(gè)組件,對(duì)比和的上傳組件,它能做到更多的事情,比如可暫停繼續(xù)上傳上傳隊(duì)列管理,支持最大并發(fā)上傳分塊上傳支持進(jìn)度預(yù)估 為什么使用Vue-Simple-Uploader 最近用到了Vue + Spring Boot來(lái)完成文件上傳的操作,踩了一些坑,對(duì)比了一些Vue的組件,發(fā)現(xiàn)了一...
摘要:本文介紹如何在中開(kāi)發(fā)接口,以及接口如何同時(shí)支持和兩種協(xié)議。該功能很簡(jiǎn)單,就是通過(guò)一個(gè)人的姓名查詢這個(gè)人的詳細(xì)信息。就是關(guān)鍵,如本次請(qǐng)求報(bào)文如下就是,對(duì)應(yīng)。測(cè)試使用進(jìn)行測(cè)試,通過(guò)地址導(dǎo)入文件進(jìn)行測(cè)試。測(cè)試這樣就實(shí)現(xiàn)了和同時(shí)提供的目的。 介紹spring boot web模塊提供了RestController實(shí)現(xiàn)restful,第一次看到這個(gè)名字的時(shí)候以為還有SoapController,...
摘要:有了配置文件之后,啟動(dòng)程序,我們首先可以看到日志輸入,由此可以看出程序讀取了的配置。首先,根據(jù)的全局查找功能,直接搜索這些詞出現(xiàn)的位置,進(jìn)行定位,可以找到這個(gè)日志出現(xiàn)于方法之中。由于我們的配置文件在下,所以只要留意當(dāng)為的程序執(zhí)行情況即可。 前言 上文《一文掌握 Spring Boot Profiles》 是對(duì) Spring Boot Profiles 的介紹和使用,因此本文將從源碼角度...
閱讀 3114·2021-10-14 09:50
閱讀 1319·2021-10-08 10:21
閱讀 3773·2021-10-08 10:16
閱讀 3158·2021-09-27 14:02
閱讀 3209·2021-09-23 11:21
閱讀 2331·2021-09-07 10:17
閱讀 467·2019-08-30 14:00
閱讀 2206·2019-08-29 17:26