基于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 相关文章推荐
Mootools 1.2教程 设置和获取样式表属性
Sep 15 Javascript
jQuery 自动增长的文本输入框实现代码
Apr 02 Javascript
页面只有一个text的时候,回车自动submit的解决方法
Aug 12 Javascript
绑定回车enter事件代码
May 18 Javascript
jQuery给多个不同元素添加class样式的方法
Mar 26 Javascript
基于javascript实现tab选项卡切换特效调试笔记
Mar 30 Javascript
Angular2  NgModule 模块详解
Oct 19 Javascript
jQuery模拟淘宝购物车功能
Feb 27 Javascript
JS实现的全排列组合算法示例
Oct 09 Javascript
基于js中style.width与offsetWidth的区别(详解)
Nov 12 Javascript
Vue列表渲染的示例代码
Nov 01 Javascript
javascript的hashCode函数实现代码小结
Aug 11 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依赖注入的理解实例分析
2016/10/09 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
PHP连接MySQL数据库三种实现方法
2020/12/10 PHP
javaScript实现浮点数转十六进制字符
2013/10/29 Javascript
JS window对象的top、parent、opener含义介绍
2013/12/03 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
JS简单实现String转Date的方法
2016/03/02 Javascript
AngularJS中的表单简单入门
2016/07/28 Javascript
NodeJs搭建本地服务器之使用手机访问的实例讲解
2018/05/12 NodeJs
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
vue-cli3使用 DllPlugin 实现预编译提升构建速度
2019/04/24 Javascript
vue prop属性传值与传引用示例
2019/11/13 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
vue3使用vue-count-to组件的实现
2020/12/25 Vue.js
使用django-crontab实现定时任务的示例
2018/02/26 Python
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
python中的global关键字的使用方法
2019/08/20 Python
tensorflow模型继续训练 fineturn实例
2020/01/21 Python
Python callable内置函数原理解析
2020/03/05 Python
Python集成开发工具Pycharm的安装和使用详解
2020/03/18 Python
python接入支付宝的实例操作
2020/07/20 Python
python实现按日期归档文件
2021/01/30 Python
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
宿舍卫生检讨书
2014/01/16 职场文书
日本语毕业生自荐信
2014/02/01 职场文书
超市开业庆典策划方案
2014/05/14 职场文书
企业宣传标语
2014/06/09 职场文书
暑假安全教育广播稿
2014/09/10 职场文书
先进班组材料范文
2014/12/25 职场文书
小学班主任教育随笔
2015/08/15 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python