基于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网页关闭时提醒效果脚本
Oct 22 Javascript
避免 showModalDialog 弹出新窗体的原因分析
May 31 Javascript
jQuery Ajax提交表单查询获得数据实例代码
Sep 19 Javascript
js获取视频时长代码
Apr 10 Javascript
JavaScript返回上一页的三种方法及区别介绍
Jul 04 Javascript
JS实现不规则TAB选项卡效果代码
Sep 16 Javascript
javascript下拉列表中显示树形菜单的实现方法
Nov 17 Javascript
JavaScript ParseFloat()方法
Dec 18 Javascript
封装好的javascript前端分页插件pagination
Jan 04 Javascript
如何用angularjs制作一个完整的表格
Jan 21 Javascript
VUE 自定义组件模板的方法详解
Aug 30 Javascript
echarts 使用formatter 修改鼠标悬浮事件信息操作
Jul 20 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
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
2016/10/13 PHP
TNC vs IO BO3 第二场2.13
2021/03/10 DOTA
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
Js中的onblur和onfocus事件应用介绍
2013/08/27 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
jQuery中remove()方法用法实例
2014/12/25 Javascript
jQuery中:disabled选择器用法实例
2015/01/04 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
微信小程序 Button 组件详解及简单实例
2017/01/10 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
jQuery插件FusionCharts实现的MSBar3D图效果示例【附demo源码】
2017/03/23 jQuery
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
vue中的适配px2rem示例代码
2018/11/19 Javascript
javascript实现弹出层效果
2019/12/10 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
[09:33]2015国际邀请赛第四日TOP10
2015/08/08 DOTA
[55:23]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
会计专业毕业生自我评价
2013/09/25 职场文书
房地产项目建议书
2014/03/12 职场文书
2014年教师党员公开承诺书
2014/05/28 职场文书
团队精神口号
2014/06/06 职场文书
幼儿生日活动方案
2014/08/27 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
家长会主持词开场白
2015/05/29 职场文书
2016年教师节慰问信
2015/12/01 职场文书
《狼牙山五壮士》教学反思
2016/02/17 职场文书
创业计划书之宠物店
2019/09/19 职场文书