首页 > 编程语言 >JAVA WEB项目大文件上传下载解决方案

JAVA WEB项目大文件上传下载解决方案

时间:2023-02-08 17:11:35浏览次数:58  
标签:WEB JAVA 字节 文件 上传下载 编辑 控件 源码 下载

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

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

上传文件实体类:

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

编辑

 

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

编辑

 

文件初始化部分

编辑

 

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

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

编辑

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

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

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

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

第七步:释放缓冲区

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

编辑

文件夹扫描类

编辑

 

存储路径生成类

编辑

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

最后放一张实现的效果图

编辑

后端代码逻辑大部分是相同的,目前能够支持MySQL,Oracle,SQL。在使用前需要配置一下数据库

控件源码下载:

asp.net源码下载jsp-springboot源码下载jsp-eclipse源码下载jsp-myeclipse源码下载php源码下载csharp-winform源码下载vue-cli源码下载c++源码下载

详细配置信息及思路

标签:WEB,JAVA,字节,文件,上传下载,编辑,控件,源码,下载
From: https://www.cnblogs.com/zyzzz/p/17102538.html

相关文章

  • javaScript进阶
    javaScript进阶一、作用域JS的作用域简单来说就是变量(变量作用于又称上下文)和函数生效(能被访问)的区域1.全局作用域函数之外声明的变量,会成为全局变量。变量在程序的任......
  • Java中使用MapStruct时使用@Mapping的expression表达式实现自定义转换规则(多对一、获
    场景Java中使用MapStruct实现对象转换/实体属性赋值/Bean属性映射,避免大量setter和getter:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/128922752上面......
  • Swagger使用注意事项-java
    使用swagger后,所有controller中的方法都会自动生成接口;但是并不完美,需要配合swagger的注解来进行接口说明的完善(在代码中添加了注释,方便阅读)。可以导入到Yapi中,免去手动创......
  • Java中的JDBC基本概念和各对象详解
    概念JavaDataBaseConnectivity Java数据库连接,Java语言操作数据库JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这......
  • JAVA WEB项目大文件上传下载源代码
    ​ 1、介绍enctypeenctype 属性规定发送到服务器之前应该如何对表单数据进行编码。enctype作用是告知服务器请求正文的MIME类型(请求消息头content-type的作用一样)1、......
  • 关于webpack 开启代理proxy后,接口看不到代理地址的问题。
    今天在项目中发现,  明明在proxy里代理了 接口地址确不是10.10.11.106/front/xxxxxx。这是为啥呢?changeOrigin的修改也是一样,在网络请求中发现host还是没改。这又......
  • Java对字符串32位的uuid添加上横杠
    StringBufferstringBuilder=newStringBuffer("f7504588c65a4b99bc20cf1646f58ef1");stringBuilder.insert(8,"-");stringBuilder.in......
  • FreeSWITCH 使用SSL-WebSocket-WebRTC
    阿里上买的域名,申请了个免费ssl,然后开始折腾,,,,申请了ssl证书,但是不提供.pem格式的下载(*/ω\*)然后把一堆提供的都下载下来了, 然后又到网上搜crt/cer......
  • FreeSwitch启用WEBRTC小记
    FS启用webrtc:(可以使用自签发的root证书或申请免费的域名证书!以便使用websip)1、创建证书,用自签发的证书或申请域名证书都可以2、生成wss证书,放FS的相应目录:windows是.......
  • javaScript 高级语法 - 解构赋值,箭头函数,set对象,set全部属性与方法
    1.解构赋值//数组的解构赋值letarray=["levi","mkasa"];let[name1,name2]=array;console.log(name1,name2);//levi,mikasa//对象的解构赋值lethuman={id:1,name......