基于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 相关文章推荐
借用Google的Javascript API Loader来加速你的网站
Jan 28 Javascript
最简单的js图片切换效果实现代码
Sep 24 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
Jun 05 Javascript
JavaScript判断是否为数组的3种方法及效率比较
Apr 01 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
May 05 Javascript
D3.js实现散点图和气泡图的方法详解
Sep 21 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
Oct 10 Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
Nov 25 Javascript
Jquery实时监听input value的实例
Jan 26 Javascript
微信小程序 参数传递实例代码
Mar 20 Javascript
vue 解决form表单提交但不跳转页面的问题
Oct 30 Javascript
bootstrap实现tab选项卡切换
Aug 09 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学习教程之第2天
2008/06/15 PHP
PHP 判断常量,变量和函数是否存在
2009/04/26 PHP
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
Drupal简体中文语言包安装教程
2014/09/27 PHP
php微信公众号开发之校园图书馆
2018/10/20 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
自己做的模拟模态对话框实现代码
2012/05/23 Javascript
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
浅析Javascript使用include/require
2013/11/13 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
2016/07/27 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
详解如何修改 node_modules 里的文件
2020/05/22 Javascript
Vue按时间段查询数据组件使用详解
2020/08/21 Javascript
Python学习资料
2007/02/08 Python
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
2015/02/04 Python
Python将图片转换为字符画的方法
2020/06/16 Python
python-docx修改已存在的Word文档的表格的字体格式方法
2018/05/08 Python
python将txt文件读入为np.array的方法
2018/10/30 Python
python的debug实用工具 pdb详解
2019/07/12 Python
详解基于python-django框架的支付宝支付案例
2019/09/23 Python
jupyter notebook插入本地图片的实现
2020/04/13 Python
html5 视频播放解决方案
2016/11/06 HTML / CSS
工业自动化毕业生自荐信范文
2014/01/04 职场文书
小学教师培训感言
2014/02/11 职场文书
会走路的树教学反思
2014/02/20 职场文书
法定代表人授权委托书范文
2014/08/02 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
合作协议书范本
2014/10/25 职场文书
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript
SQLServer中exists和except用法介绍
2021/12/04 SQL Server