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

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

上传文件实体类:

看得出来,实体类中已经有很多我们需要的功能了,还有实用的属性。如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超大文件上传与下载/

欢迎入群一起讨论“374992201”

java web文件夹_JAVA WEB项目文件夹上传下载解决方案相关推荐

  1. java断点上传下载_java实现多线程断点续传,上传下载 分享

    程序采用的ftp工具, apache 的 commons-net-ftp-ftpclient package com.ftp; import java.io.File; import java.io. ...

  2. B/S文件上传下载解决方案

    需求: 项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在20G内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以20G来进行限制. PC端全平台支持,要求支持Window ...

  3. JSP中的文件操作:数据流、File类、文件浏览、目录操作、上传下载

    ​ 文件可以永久地存储信息,从本质上讲文件就是存放在盘上的一系列数据的集合.应用程序如果想长期保存数据,就必须将数据存储到文件中,这就涉及到文件的操作.而在编写网站应用程序的过程中,有许多地方要对文件 ...

  4. VUE 项目大文件上传下载解决方案

    之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...

  5. java scp 文件夹_利用scp 远程上传下载文件/文件夹

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...

  6. linux上下载文件夹命令,linux命令(上传下载文件)

    1.从服务器上下载文件 scp username@servername:/path/filename /var/www/local_dir(本地目录) 例如scp root@192.168.0.101 ...

  7. java 图片回显_java实现Simditor图片上传七牛云并回显

    首先呢,我们有这样一个需求: 当图片上传Simditor时,将其保存到七牛云上,然后并回显在我们的Simditor中. 首先,需要我们有一个七牛云帐号,并且配置Simditor富文本编辑器. 其次,我 ...

  8. java公众号图片上传_java微信公众号上传下载图片,springmvc demo

    [实例简介] 微信上传下项目使用说明: 1.本项目适合学习springmvc学者(springmvc demo), url(http://localhost:8082/com.demo.weixin/ ...

  9. java修改文件的大小限制_Struts2修改上传文件大小限制方法解析

    首先struts上传最大大小由两个地方决定. struts.multipart.maxSize决定整个post的form最大是多大,所以这个限制是最初的.默认大小是接近2M,在struts的defau ...

最新文章

  1. js中的DOM对象和jQuery对象的比较
  2. 【泛型】Generic 参数化类型 类型转换
  3. 全国首家工资总额负面清单管理试点企业获批
  4. python中数字和字符串可以直接相加_用c语言或者python将文件中特定字符串后面的数字相加...
  5. linux转为root用户_[R] 展示linux文件树 - collapsibleTree
  6. Visual Studio 2015 RC中的ASP.NET新特性和问题修正
  7. 人行强拒规则拒绝评分人群
  8. matlab monte carlo,Monte Carlo Simulation
  9. Java NIO和IO的主要区别
  10. linux mysql 修改root密码_MySQL忘了root密码,如何修改?
  11. 基于javaweb+jsp的健康体检信息管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Bootstrap)
  12. linux下scrt依赖包libssl1.0.0解决方法
  13. 绿联串口线linux驱动下载,绿联usb转串口驱动
  14. 【运营】关于A/BTest的简单介绍
  15. select()函数的作用
  16. 制作我自己的桌面小机器人Zbot(遇到的问题总结)
  17. 计算机架构设计的 8 个伟大思想
  18. 2021海口高考调研成绩查询,2021年海口市高考调研测试附答案.doc
  19. ZZULI-2019年3月份月赛(个人赛)问题 I: 小P找座位 思维or矩阵快速幂
  20. 基于Springboot实现OA办公系统

热门文章

  1. Matlab函数解释:colormap
  2. Android简易音乐播放器实现代码
  3. 深入理解linux系统的目录结构
  4. 计算道路超高lisp_5G+AI超高清智能视频监控将迎来增长期
  5. 10 年深度学习顶级论文和代码精选,请务必收藏!
  6. hex editor怎么搜索代码_代码审计从入门到放弃(三) phplimit
  7. delphi 垃圾回收框架
  8. C#(WINFORM)学习
  9. SetWindowLong
  10. Go Embed简明教程