近期基于项目上使用到的RestTemplate下载文件流,遇到1G以上的大文件,下载需要3-4分钟,因为调用API接口没有做分片与多线程, 文件流全部采用同步方式加载,性能很慢。最近结合网上案例及自己总结,写了一个分片下载tuling/fileServer项目: 1.包含同步下载文件流在浏览器加载输出相关代码; 2.包含分片多线程下载分片文件及合并文件相关代码;
另外在DownloadThread项目中使用代码完成了一个远程RestUrl请求去获取一个远端资源大文件进行多线程分片下载 到本地的一个案例,可以下载一些诸如.mp4/.avi等视频类大文件。相关代码也一并打包上传。
同步下载,支持分片下载Range主要代码:
多线程分片下载分片文件,下载完成之后合并分片主要代码:
代码都在本地亲测(已修复Bug)可用,目前比较欠缺的是没有实现在分片下载时对应浏览器进行下载展示,需要暂存在本地磁盘目录。 目前将代码开源,希望能有更好解决方案的Coder Fork支持!也欢迎Star捧场。
博文参考了图灵学院相关的分片下载案例教程,并修改了部分代码实现:
本文代码已上传至GitHub:
Original: https://www.cnblogs.com/yif0118/p/15456666.html
Author: 人无名,则可专心练剑
Title: 【Java框架】– SpringBoot大文件RestTemplate下载解决方案
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/575931/
转载文章受原作者版权保护。转载请注明原作者出处!