基于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 相关文章推荐
Apply an AutoFormat to an Excel Spreadsheet
Jun 12 Javascript
百度 popup.js 完美修正版非常的不错 脚本之家推荐
Apr 17 Javascript
一些经常会用到的Javascript检测函数
May 31 Javascript
浅谈javascript的数据类型检测
Jul 10 Javascript
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
Jan 06 Javascript
js禁止页面刷新与后退的方法
Jun 08 Javascript
JavaScript中的this使用详解
Jul 27 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
Apr 25 Javascript
jQuery简介_动力节点Java学院整理
Jul 04 jQuery
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
Jul 22 jQuery
Node.js学习之TCP/IP数据通讯(实例讲解)
Oct 11 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
Sep 26 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
用PHP+java实现自动新闻滚动窗口
2006/10/09 PHP
PHP 实现多服务器共享 SESSION 数据
2009/08/15 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
2014/04/02 PHP
使用php-timeit估计php函数的执行时间
2015/09/06 PHP
简单的自定义php模板引擎
2016/08/26 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
Javascript 按位与运算符 (&)使用介绍
2014/02/04 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
2015/11/19 Javascript
JS修改地址栏参数实例代码
2016/06/14 Javascript
浅谈jQuery before和insertBefore的区别
2016/12/04 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
2017/03/21 jQuery
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
vue在路由中验证token是否存在的简单实现
2019/11/11 Javascript
js实现内置计时器
2019/12/16 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
2020/08/27 Javascript
python之wxPython应用实例
2014/09/28 Python
使用Python实现博客上进行自动翻页
2017/08/23 Python
Python实现重建二叉树的三种方法详解
2018/06/23 Python
Python实现统计英文文章词频的方法分析
2019/01/28 Python
详解爬虫被封的问题
2019/04/23 Python
详解python中的time和datetime的常用方法
2019/07/08 Python
世界上最具创新性的增强型知名运动品牌:Proviz
2018/04/03 全球购物
Otticanet美国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
新学期决心书
2014/03/11 职场文书
工人先锋号申报材料
2014/12/29 职场文书
2015高考寄语集锦
2015/02/27 职场文书
音乐之声观后感
2015/06/04 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书
Python制作一个随机抽奖小工具的实现
2021/07/07 Python
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏
Golang实现可重入锁的示例代码
2022/05/25 Golang