Spring Boot實現TUS協議支持文件斷點上傳

Spring Boot實現TUS協議實現文件斷點上傳

關於Tus

TUS協議提供一種基於 HTTP/1.1 和 HTTP/2 機制用於文件斷點續傳。

舉例

HEAD請求用來查詢某個文件上傳進度使用
下面例子中一個文件總共100個Byte,已經傳輸了70個Byte,全部交互內容都在HTTP請求頭中。html

HEAD Request:node

HEAD /files/24e533e02ec3bc40c387f1a0e460e216 HTTP/1.1
Host: tus.example.org
Tus-Resumable: 1.0.0

Response:git

HTTP/1.1 200 OK
Upload-Offset: 70
Tus-Resumable: 1.0.0

拿到Upload-Offset, 使用PATCH方式請求繼續傳輸文件的未完成部分。github

PATCH Request:npm

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

以上就完成了傳輸。服務器

請求類型

  • OPTIONS請求app

    主要是獲取協議描述,支持的各類參數,協議細節,其實tus使用 Header來進行服務器和客戶端信息交互, OPTIONS須要實現兩個Action,一個用於總的協議描述,另外一個能夠獲取到當前文件的上傳進度 Offset
  • POST請求ui

    當有新文件須要上傳時候,註冊文件信息,文件名,文件大小,這些內容,tus-js-client的文件名是Base64格式的。
  • HEAD請求url

    請求當前文件的服務器信息,返回文件大小和當前進度。
  • PATCH請求

    上傳文件,寫入磁盤系統。
  • Get請求

    下載文件,根據guid
  • DELETE請求

    刪除文件

大體流程

流程見下圖,不解釋了

tus

客戶端

客戶端本文使用js-tus-client項目,這個項目本地自行啓動,有node.js環境的,以下:

npm install -g http-server
cd html
http-server .

而後打開瀏覽器8080端口,就能夠看到頁面了。

Simple.html 是最簡單的一個文件上傳頁面demo。

其餘都是js-tus-client的內容。

tus須要本地瀏覽器中存儲已經上傳的文件信息,這些js-tus-client都已經實現。

Github地址

https://github.com/freew01f/t...

代碼都在這裏了,這裏就不解釋了,若是你想修改上傳的endpoint地址,你須要在POST方法建立時修改,由於這個url會存在本地瀏覽器中。

參考文獻

相關文章
相關標籤/搜索