这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数

下面直接贴代码吧,一些难懂的我大部分都加上注释了:

上传文件实体类:

看得出来,实体类中已经有很多我们需要的功能了,还有实用的属性。如MD5秒传的信息。

首先是文件数据接收逻辑,负责接收控件上传的文件块数据,然后写到服务器的文件中。控件已经提供了块的索引,大小,MD5和长度信息,我们可以根据需要来灵活进行处理,也可以将文件块的数据保存到分布式存储系统中。

文件初始化部分

第一步:获取RandomAccessFile,随机访问文件类的对象

第二步:调用RandomAccessFile的getChannel()方法,打开文件通道 FileChannel,这块逻辑可以优化,如果以后有分布式存储需求,可以改为分布式存储,减轻单台服务器的压力。

第三步:获取当前是第几个分块,计算文件的最后偏移量

第四步:获取当前文件分块的字节数组,用于获取文件字节长度

第五步:使用文件通道FileChannel类的 map()方法创建直接字节缓冲器MappedByteBuffer

第六步:将分块的字节数组放入到当前位置的缓冲区内mappedByteBuffer.put(byte[] b);

第七步:释放缓冲区

第八步:检查文件是否全部完成上传

文件夹扫描类

存储路径生成类

好了,到此就全部结束了,如果有疑问或批评,欢迎评论和私信,我们一起成长一起学习。

最后放一张实现的效果图

后端代码逻辑大部分是相同的,目前能够支持MySQL,Oracle,SQL。在使用前需要配置一下数据库,可以参考我写的这篇文章:http://blog.ncmem.com/wordpress/2019/08/07/java超大文件上传与下载/

java上传大文件_Java超大文件上传解决办法相关推荐

  1. springboot上传大文件时内存溢出的可能解决办法

    springboot上传大文件时内存溢出的可能解决办法 在springboot中上传大文件时要考虑内存的情况,一般我们会通过在执行服务时加入-Xms512m -Xmx512m等参数加大堆内存,但这是指 ...

  2. 织梦Dede上传软件提示“你指定要上传的文件或文件大小超过限制”的解决办法

    织梦DedeCMS提示"你指定要上传的文件或文件大小超过限制"的解决办法 时间:2014-09-28 来源:互联网 作者:网络 阅读:1598次 如图所示,出现此情况的原因主要如下 ...

  3. 关于eclipse的Java文件前面有红色感叹号的解决办法

    关于eclipse的Java文件前面有红色感叹号的解决办法 出现红色感叹号的情况是你的builderpath里面出现了一些双重的jar结构 解决的方法就是在你的Java文件上面右键buildpath ...

  4. php file取不到手机相册,webuploader移动端选择文件无法打开手机相册的解决办法...

    webuploader移动端选择文件无法打开手机相册的解决办法 本文为转载: 原文链接:http://www.juguw.net/article-2325.html webUploader是一款不错的 ...

  5. tftp在put上传的时候显示File not found的解决办法

    tftp在put上传的时候显示File not found的解决办法 在linux下,不管使用的是哪一种super-server,inetd或者xinetd,默认情况下TFTP服务是禁用的,所以要修改 ...

  6. Django 无法加载静态文件(js,css,image)解决办法

    Django 无法加载静态文件(js,css,image)解决办法 按照这个配置成功: https://jingyan.baidu.com/article/8cdccae92ffc16315413cd ...

  7. 关于压缩jar包时提示*.*没有这个文件或目录的问题以及解决办法:

    关于压缩jar包时提示.没有这个文件或目录的问题以及解决办法: 问题描述: 我在打包jar时,CMD中进入到包的上一层目录. 在命令提示符中输入 提示如下: 从提示中可知没有找到我们想要打包的clas ...

  8. Windows下文件或文件夹不能删除时的解决办法

    windows在删除文件或文件夹时,提示文件或文件夹被占用而无法删除 解决办法: win7: winxp: 需要借助第三方工具Unlocker.360.Process Explorer(这个是微软支持 ...

  9. php 修改css 不生效,HTML外部引用CSS文件不生效原因分析及解决办法

    本文主要给大家介绍html外部引用css文件不生效的原因分析及解决办法,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧 作为一个前端小白,鼓捣了几天前端..今天突然发现我深信不疑的东西, ...

最新文章

  1. hdu3182 状态压缩dp
  2. tcp/ip 协议栈Linux源码分析二 IPv4分片报文重组分析二
  3. simditor存储数据到前台展示去掉标签
  4. Java线程池:ThreadPoolExecutor运行原理
  5. 创建型模式——工厂模式
  6. canvas一些属性
  7. go 遍历二维数组json_for-range造就循环永动机?快来看看go中for-range的那些事!
  8. 解决Windows无法加载中文(中国)-王码五笔输入法(任何输入法都行) 键盘的布局的方法...
  9. 用户收货地址管理后端实现
  10. 你的深度思考能力,是如何一步步被毁掉的?奶嘴战略
  11. ftp服务器和共享文件夹权限设置,ftp服务器共享文件夹权限设置
  12. banne图怎么设计才会有更多的点击率
  13. 浅谈CPU 硬盘 内存关系
  14. android 视频剪切,安卓手机视频剪辑app 将视频某一段截取下来,或者删除视频中某一部分...
  15. 比Worktile更适合软件研发的项目管理系统有哪些?10大项目管理系统对比
  16. 在线题库html模板,题库分类.html
  17. 不那么认真的linux复习
  18. 03 数据分析之分布分析
  19. 博通(Broadcom)收购赛门铁克(Symantec)将一波三折,这是第一折
  20. android开发蓝牙是否可见开关_android开发之蓝牙初步 扫描已配对蓝牙、更改蓝牙可见性、搜索外部蓝牙设备 | 学步园...

热门文章

  1. 阿伯特:芝加哥大学与社会学研究
  2. 实战项目| 7天掌握神经网络预测模型
  3. 教育真的可以改变命运?
  4. 研究c语言,研究c语言计算机编程实验.docx
  5. linux初学文档,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  6. k-means均值向量
  7. ssh免密登陆机制示意图
  8. Flink 1.9 CDH 6.3 集成
  9. 基于容器服务 ACK 发行版打造 CNStack 社区版
  10. 实时数仓入门训练营:基于 Apache Flink + Hologres 的实时推荐系统架构解析