spring集成tus的简单总结
spring集成tus的简单总结
背景
项目需要一个可靠、稳定的页面大文件上传实现,故选择了tus。
一、tus
- tus协议是一个基于http的断点续传的开放协议。
- 它提供了多种功能,有很好的官方和非官方实现示例,并且支持多种语言。
- 官方:https://tus.io/
核心协议
下面列出的为核心协议,其余可选的协议可点击此处
标头 | 简介 |
---|---|
Upload-Offset | 当前传输的偏移量 |
Upload-Length | 文件总大小 |
Tus-Version | 支持的协议版本列表 |
Tus-Resumable | 当前使用的协议版本 |
Tus-Extension | 服务器支持的扩展列表 |
Tus-Max-Size | 允许的文件大小 |
X-HTTP-Method-Override | http 方法覆盖 |
-
创建上传资源
- 首次上传时创建上传资源
请求头
响应
-
偏移量查询
请求头
- 检查由 HEAD 方法请求中断的上传的偏移量
响应
- 如果没有中断上传,则返回 404 响应
-
继传
请求头
- 使用 PATCH 方法请求恢复上传
响应
-
检查服务器配置信息
请求头
响应
二、库的选择以及使用
- https://github.com/tomdesair/tus-java-server
- 注意下面的代码需要适配你自己的项目,无法直接拿来使用
添加依赖项
配置
配置项 | 简介 |
---|---|
withUploadURI | 用作上传端点的 uri |
withMaxUploadSize | 上传的最大字节数(默认Long.MAX_VALUE) |
withStoragePath | 存放上传信息的路径 |
withChunkedTransferDecoding | 是否启用分块上传(默认为false) |
withThreadLocalCache | 是否启用ThreadLocal缓存(默认为false) |
withUploadExpirationPeriod | 过期时间(毫秒) |
控制器
定时任务
tusFileUploadService.cleanup()
通过该方法可以轻松清理停止上传的数据,以及超过config中设置的过期时间的数据。
创建定时任务以定期删除过期数据以保护服务器空间。
自定义extension
-
将文件地址存储在uploadInfo中
-
通过网关转发的url和后端获取的url不一致,导致无法正常上传
解决方法是重写CreationExtension,扩展一下CreationExtension的initRequestHandlers的CreationPostRequestHandler即可
其他的一些方法
__EOF__

本文作者:CrossAutomaton
本文链接:https://www.cnblogs.com/CrossAutomaton/p/18304813.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/CrossAutomaton/p/18304813.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律