基于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 嵌套的函数(作用域链)
Mar 15 Javascript
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
Oct 15 Javascript
深入分析原生JavaScript事件
Dec 29 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
Sep 08 Javascript
总结JavaScript设计模式编程中的享元模式使用
May 21 Javascript
JavaScript中Form表单技术汇总(推荐)
Jun 26 Javascript
详解jQuery插件开发方式
Nov 22 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
May 19 Javascript
JS实现留言板功能
Jun 17 Javascript
Node.js搭建小程序后台服务
Jan 03 Javascript
npm 下载指定版本的组件方法
May 17 Javascript
webpack项目使用eslint建立代码规范实现
May 16 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
PHP5 安装方法
2007/01/15 PHP
让PHP以ROOT权限执行系统命令的方法
2011/02/10 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
php生成rss类用法实例
2015/04/14 PHP
JS window.opener返回父页面的应用
2009/10/24 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
2014/03/05 Javascript
js面向对象编程之如何实现方法重载
2014/07/02 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
JS轮播图中缓动函数的封装
2020/11/25 Javascript
javascript实现简易计算器
2017/02/01 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
不使用 JS 匿名函数理由
2017/11/17 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
Node.js的进程管理的深入理解
2019/01/09 Javascript
uni-app之APP和小程序微信授权方法
2019/05/09 Javascript
简单了解JavaScript异步
2019/05/23 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
layui实现数据表格隐藏列的示例
2019/10/25 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
[14:00]DOTA2国际邀请赛史上最长大战 赛后专访B神
2013/08/10 DOTA
Python实现图像几何变换
2015/07/06 Python
Python网络爬虫神器PyQuery的基本使用教程
2018/02/03 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
Python实现大数据收集至excel的思路详解
2020/01/03 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
2020/02/28 Python
经典优秀毕业生求职信范文分享
2013/12/18 职场文书
财务支持类个人的自我评价
2014/02/14 职场文书
学习十八届三中全会精神实施方案
2014/02/17 职场文书
写给妈妈的感谢信
2015/01/22 职场文书
地球一小时活动总结
2015/02/27 职场文书
js前端图片加载异常兜底方案
2022/06/21 Javascript
Redis唯一ID生成器的实现
2022/07/07 Redis