基于JavaScript实现大文件上传后端代码实例


Posted in Javascript onAugust 18, 2020

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

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

上传文件实体类:

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

基于JavaScript实现大文件上传后端代码实例

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

基于JavaScript实现大文件上传后端代码实例

文件初始化部分

基于JavaScript实现大文件上传后端代码实例

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

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

基于JavaScript实现大文件上传后端代码实例

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

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

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

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

第七步:释放缓冲区

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

基于JavaScript实现大文件上传后端代码实例

文件夹扫描类

基于JavaScript实现大文件上传后端代码实例

存储路径生成类

基于JavaScript实现大文件上传后端代码实例

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

最后放一张实现的效果图

基于JavaScript实现大文件上传后端代码实例

后端代码逻辑大部分是相同的,目前能够支持MySQL,Oracle,SQL。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js常用函数 不错
Sep 08 Javascript
setTimeout和setInterval的深入理解
Nov 08 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
Mar 03 Javascript
Node.js中npm常用命令大全
Jun 09 Javascript
JavaScript数组操作函数汇总
Aug 05 Javascript
原生JavaScript实现todolist功能
Mar 02 Javascript
AngularJS实现动态切换样式的方法分析
Jun 26 Javascript
Vue使用NPM方式搭建项目
Oct 25 Javascript
js字符串倒序的实例代码
Nov 30 Javascript
详解微信小程序图片地扯转base64解决方案
Aug 18 Javascript
Vue使用axios引起的后台session不同操作
Aug 14 Javascript
vue打包时去掉所有的console.log
Apr 10 Vue.js
javascript实现扫雷简易版
Aug 18 #Javascript
详解Vue的组件中data选项为什么必须是函数
Aug 17 #Javascript
Openlayers实现扩散的动态点(水纹效果)
Aug 17 #Javascript
openLayer4实现动态改变标注图标
Aug 17 #Javascript
openlayers4实现点动态扩散
Aug 17 #Javascript
Vue实现计算器计算效果
Aug 17 #Javascript
vue-model实现简易计算器
Aug 17 #Javascript
You might like
多重?l件?合查?(二)
2006/10/09 PHP
学习php过程中的一些注意点的总结
2013/10/25 PHP
PHP实现单例模式最安全的做法
2014/06/13 PHP
PHP中的session安全吗?
2016/01/22 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
PHP实现微信商户支付企业付款到零钱功能
2018/09/30 PHP
JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
2010/11/16 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
jQuery实现渐变下拉菜单的简单方法
2015/03/11 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
JavaScript实现点击切换功能
2021/01/27 Javascript
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
python 实现A*算法的示例代码
2018/08/13 Python
对Django项目中的ORM映射与模糊查询的使用详解
2019/07/18 Python
Python爬虫学习之翻译小程序
2019/07/30 Python
Python+OpenCV实现将图像转换为二进制格式
2020/01/09 Python
Python 输出详细的异常信息(traceback)方式
2020/04/08 Python
判断Threading.start新线程是否执行完毕的实例
2020/05/02 Python
CSS实现鼠标滑过鼠标点击代码写法
2016/12/26 HTML / CSS
100%羊绒:NakedCashmere
2020/08/26 全球购物
什么是索引指示器
2012/08/20 面试题
教师年终个人自我评价
2013/10/04 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
国际贸易本科毕业生求职信
2014/09/26 职场文书
毕业论文指导老师意见
2015/06/04 职场文书
党员发展大会主持词
2015/07/03 职场文书
Django cookie和session的应用场景及如何使用
2021/04/29 Python
JavaScript原始值与包装对象的详细介绍
2021/05/11 Javascript
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS
Win11绿屏怎么办?Win11绿屏死机的解决方法
2021/11/21 数码科技
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis