web 大文件分片上传处理

摘要:
前端对文件进行分区并上传文件实体类:首先,文件数据接收逻辑负责接收控件上传的文件块数据,然后将其写入服务器文件。控件提供了块索引,还可以将文件块数据保存到分布式存储系统。随机访问文件类的对象步骤2:计算文件的最终偏移量步骤4:获取当前文件块的字节数组以获取文件字节长度步骤5:

这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数

下面直接贴代码吧,一些难懂的我大部分都加上注释了:

上传文件实体类:

看得出来,实体类中已经有很多我们需要的功能了,还有实用的属性。如MD5秒传的信息。

web 大文件分片上传处理第1张

首先是文件数据接收逻辑,负责接收控件上传的文件块数据,然后写到服务器的文件中。控件已经提供了块的索引,大小,MD5和长度信息,我们可以根据需要来灵活进行处理,也可以将文件块的数据保存到分布式存储系统中。

web 大文件分片上传处理第2张

文件初始化部分

web 大文件分片上传处理第3张

第一步:获取RandomAccessFile,随机访问文件类的对象

第二步:调用RandomAccessFile的getChannel()方法,打开文件通道 FileChannel,这块逻辑可以优化,如果以后有分布式存储需求,可以改为分布式存储,减轻单台服务器的压力。

web 大文件分片上传处理第4张

第三步:获取当前是第几个分块,计算文件的最后偏移量

第四步:获取当前文件分块的字节数组,用于获取文件字节长度

第五步:使用文件通道FileChannel类的 map()方法创建直接字节缓冲器  MappedByteBuffer

第六步:将分块的字节数组放入到当前位置的缓冲区内  mappedByteBuffer.put(byte[] b);

第七步:释放缓冲区

第八步:检查文件是否全部完成上传

web 大文件分片上传处理第5张

文件夹扫描类

web 大文件分片上传处理第6张

存储路径生成类

web 大文件分片上传处理第7张

好了,到此就全部结束了,如果有疑问或批评,欢迎评论和私信,我们一起成长一起学习。

最后放一张实现的效果图

web 大文件分片上传处理第8张

后端代码逻辑大部分是相同的,目前能够支持MySQL,Oracle,SQL。在使用前需要配置一下数据库,可以参考我写的这篇文章:http://blog.ncmem.com/wordpress/2019/08/07/java超大文件上传与下载/  
欢迎入群一起讨论“374992201”

免责声明:文章转载自《web 大文件分片上传处理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mdb数据库文件如何导入Microsoft SQL Server 2008中babel.config.js 和 .babelrc 对比下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

selenium解决上传文件问题之总结

一、上传文件框是input形式 首先定位上传按钮 发送要上传的文件 driver.findElement(By.id("XX")).sendKeys("D:\20.jpg"); 利用Robot类处理文件上传。 其大致流程可以为: 1、 利用selenium点击web上本地文件的上传按钮; 2、 在弹出的弹框中,文件路径输入框默认的是光标的聚焦,将文件在...

真机调试问题 错误集合

1. 编译iPad真机时,选择了 Architetures:Standard(armv6) BaseSDK:iPhoneDevice3.2 TargetDeviceFamily:iPad. 若编译出现如下错误: Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2...

使用vscode快速建立vue模板

当我们希望每次新建.vue文件后,vscode能够根据配置,自动生成我们想要的内容。 打开vscode编辑器,依次选择“文件 -> 首选项 -> 用户代码片段”,此时,会弹出一个搜索框,我们输入vue,将代码ctrl+c 到vue-html.json { "Print to console": { "prefix": "vue",...

分享在winform下实现左右布局多窗口界面

在web页面上我们可以通过frameset,iframe嵌套框架很容易实现各种导航+内容的布局界面,而在winform、WPF中实现其实也很容易,我这里就分享一个:在winform下实现左右布局多窗口界面。 我这里说的多窗口是指一个父窗口包含多个子窗口,在winform中实现这种效果很简单,即将某个窗口的IsMdiContainer设为true,然后将其它...

【网络状态反馈码】

一些常见HTTP状态码为: 200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务不可用 常见HTTP状态码大全 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码。 代码 说明 http状态码 100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 http状态码...

Qt程序的字符编码方式

本节会创建一个图形界面 Qt 程序,并故意对源文件使用不恰当的字符编码方式,导致其文本显示控件的汉字乱码。我们会介绍两种纠正方法: 第一种是不修改源代码文件编码格式,通过 QString::fromLocal8Bit() 函数在程序运行时转码; 第二种是直接将源代码文件整体转换成 UTF-8 编码,就不需要修改具体的代码行了。 第二种是最为推荐的方式,...