基于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 相关文章推荐
javascript之解决IE下不渲染的bug
Jun 29 Javascript
javascript getElementsByName()的用法说明
Jul 31 Javascript
js动态添加删除,后台取数据(示例代码)
Nov 25 Javascript
jQuery实现带渐显效果的人物多级关系图代码
Oct 16 Javascript
bootstrap布局中input输入框右侧图标点击功能
May 16 Javascript
JS中位置与大小的获取方法
Nov 22 Javascript
JavaScript中Math对象的方法介绍
Jan 05 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
Sep 12 jQuery
vue实现微信分享朋友圈,发送朋友的示例讲解
Feb 10 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
Oct 29 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
Nov 30 Javascript
Node.js系列之发起get/post请求(2)
Aug 30 Javascript
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
prototype 1.5 & scriptaculous 1.6.1 学习笔记
2006/09/07 Javascript
javascript JSON操作入门实例
2010/04/16 Javascript
jQuery UI 应用不同Theme的办法
2010/09/12 Javascript
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
2014/05/23 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
浅谈javascript中return语句
2015/07/15 Javascript
jquery实现滑动特效代码
2015/08/10 Javascript
jQuery实现带有洗牌效果的动画分页实例
2015/08/31 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
js 性能优化之算法和流程控制
2017/02/15 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
jQuery复合事件用法示例
2017/06/10 jQuery
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
jQuery使用each遍历循环的方法
2018/09/19 jQuery
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
2019/04/26 Javascript
vue-router跳转时打开新页面的两种方法
2019/07/29 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
[01:20:47]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第一场 1月19日
2021/03/11 DOTA
Python类方法__init__和__del__构造、析构过程分析
2015/03/06 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
python数据结构之链表详解
2017/09/12 Python
使用python编写简单的小程序编译成exe跑在win10上
2018/01/15 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
如何使用python进行pdf文件分割
2019/11/11 Python
python如何求100以内的素数
2020/05/27 Python
基于Python绘制个人足迹地图
2020/06/01 Python
人事专员的岗位职责
2014/03/01 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
2014报到证办理个人委托书
2014/10/08 职场文书
建议书范文
2015/02/05 职场文书
个人廉洁自律总结
2015/03/06 职场文书
Java 轮询锁使用时遇到问题
2022/05/11 Java/Android