.NET或.NET Core Web APi基于tus协议实现断点续传的示例
前言
前两天我采用技巧式方案基本实现大文件分片上传,这里只是重点在于个人思路和亲身实践,若在实际生产环境要求比较高的话肯定不行,仍存在一些问题需要深入处理,本文继续在之前基础上给出基于tus协议的*方案,本打算再次尝试利用.net core实现此协议,但在github上一搜索早在2016年就已有此协议对应的.net和.net core方案,并且一直更新到最近的.net core 3.x版本,完全满足各位所需,本文是我写出的一点demo,demo地址:
基于tus协议实现断点续传演示
基于tus协议tusdotnet方案基本demo
关于此协议实现原理这里不做阐述,请参照上述github地址自行了解,本文只是给出.net core方案下的基本demo,我们上传一个大文件然后通过进度显示上传进度以及对上传可暂停可继续,专业点讲就是断点续传,首先肯定是引入tus脚本和需要用到的bootstrap样式,我们将进度条默认隐藏,当上传时才显示,所以我们给出如下html。
接下来就是使用引入的tus脚本,也没什么太多要讲解的,直接上代码,这里稍微注意的是在如下元数据(metadata)属性对象定义给出实际文件名,便于在后台最终将上传的文件转换为目标文件,至少得知道文件扩展名,对吧。
接下来进入后台,首先安装对应tus协议实现包,如下:
接下来则是添加tus中间件,说白了就是对tus的配置,各种配置都可满足你所需,这里我只实现了文件上传完成后将上传文件转换为目标文件的处理,紧接着将如下实现tus配置以单例形式注入即可
然后获取并使用上述添加的tus配置服务
在脚本中我们看到有个endpoint属性,此属性表示上传到服务器的上传结点地址,因为在上到服务器时我们可能需对此请求进行额外处理,比如元数据中的文件名是否已提供等等,所以我们在使用结点映射时,添加对上述结点名称的映射,如下:
该映射第二个参数为requestdelegate,这个参数用过.net core的童鞋都知道,这里我是直接拷贝该包的路由实现,如下:
文件上传大小限制说明
我们知道无论是.net还是.net core对于文件上传大小都有默认限制大小,这里对.net core中文件大小各种环境配置做一个统一说明,如果你将.net core寄宿在iis上运行,那么请修改web.config配置文件大小限制
如果在开发环境默认使用iis运行应用程序,请通过如下根据实际情况配置文件上传大小
如果程序运行在kestrel服务器,那么请通过如下根据实际情况配置文件上传大小
如果是通过表单上传文件,那么请通过如下根据实际情况配置文件上传大小
总结
为了更好体验可以再加上当前网络宽带情况或剩余多少分钟,更详细内容请参考:、,关于大文件上传处理到此结束,希望对那些苦苦寻找最终解决方案而无助的童鞋们提供最佳*,谢谢。
到此这篇关于.net或.net core web api基于tus协议实现断点续传的示例的文章就介绍到这了,更多相关.net tus断点续传内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
上一篇: Vue 打包体积优化方案小结