资讯专栏INFORMATION COLUMN

Spring Boot实现TUS协议支持文件断点上传

YacaToy / 3516人阅读

摘要:实现协议实现文件断点上传关于协议提供一种基于和机制用于文件断点续传。请求请求当前文件的服务器信息,返回文件大小和当前进度。请求上传文件,写入磁盘系统。是最简单的一个文件上传页面。参考文献关于协议本文中用到的关于请求

Spring Boot实现TUS协议实现文件断点上传 关于Tus
TUS协议提供一种基于 HTTP/1.1 和 HTTP/2 机制用于文件断点续传。
举例

HEAD请求用来查询某个文件上传进度使用
下面例子中一个文件总共100个Byte,已经传输了70个Byte,所有交互内容都在HTTP请求头中。

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方式请求继续传输文件的未完成部分。

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

以上就完成了传输。

请求类型

OPTIONS请求

主要是获取协议描述,支持的各种参数,协议细节,其实tus使用Header来进行服务器和客户端信息交互,OPTIONS需要实现两个Action,一个用于总的协议描述,另一个可以获取到当前文件的上传进度Offset

POST请求

当有新文件需要上传时候,注册文件信息,文件名,文件大小,这些内容,tus-js-client的文件名是Base64格式的。

HEAD请求

请求当前文件的服务器信息,返回文件大小和当前进度。

PATCH请求

上传文件,写入磁盘系统。

Get请求

下载文件,根据guid

DELETE请求

删除文件

大致流程

流程见下图,不解释了

客户端

客户端本文使用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会存在本地浏览器中。

参考文献

关于TUS协议 https://tus.io/protocols/resu...

本文中用到的js client https://github.com/tus/tus-js...

关于OPTIONS请求 https://developer.mozilla.org...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72522.html

相关文章

  • Spring Boot 2.x(十六):玩转vue文件上传

    摘要:为什么使用最近用到了来完成文件上传的操作,踩了一些坑,对比了一些的组件,发现了一个很好用的组件再说说为什么选用这个组件,对比和的上传组件,它能做到更多的事情,比如可暂停继续上传上传队列管理,支持最大并发上传分块上传支持进度预估 为什么使用Vue-Simple-Uploader 最近用到了Vue + Spring Boot来完成文件上传的操作,踩了一些坑,对比了一些Vue的组件,发现了一...

    JessYanCoding 评论0 收藏0
  • spring boot开发soap webservice

    摘要:本文介绍如何在中开发接口,以及接口如何同时支持和两种协议。该功能很简单,就是通过一个人的姓名查询这个人的详细信息。就是关键,如本次请求报文如下就是,对应。测试使用进行测试,通过地址导入文件进行测试。测试这样就实现了和同时提供的目的。 介绍spring boot web模块提供了RestController实现restful,第一次看到这个名字的时候以为还有SoapController,...

    Ashin 评论0 收藏0
  • 源码解读 Spring Boot Profiles

    摘要:有了配置文件之后,启动程序,我们首先可以看到日志输入,由此可以看出程序读取了的配置。首先,根据的全局查找功能,直接搜索这些词出现的位置,进行定位,可以找到这个日志出现于方法之中。由于我们的配置文件在下,所以只要留意当为的程序执行情况即可。 前言 上文《一文掌握 Spring Boot Profiles》 是对 Spring Boot Profiles 的介绍和使用,因此本文将从源码角度...

    Dionysus_go 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<