当前位置:网站首页 > 编程语言 > 正文

若依文件上传(若依文件上传从后端限制文件类型)



"嘿,亲爱的小伙伴们!👋 今天我怀揣着满满的热情,精心准备了一篇文章,希望能像一缕清风,拂过我们求知的心田,带来一些新的思考与启发。让我们携手并进,在知识的海洋中扬帆远航,共同探索、学习、成长吧!🌟"

需要若依官网下载一份若依前后端分离版的工程项目,并且能在本地成功运行。

运行若依前后端分离版,电脑需要安装以下软件环境:

  • JDK1.8.x
  • MySQL8.0.x
  • Redis3或者Redis5都可以
  • Maven3.6.1
  • Node.js v12.18.0及以上版本

如果是新手,建议软件环境的版本与我所用的保持一致。

具体如何运行若依前后端分离项目,可去网上查询相关的资料,这里就不过多的讲解如何运行若依的前后端分离项目。

找到ruoyi-ui的项目工程,在对应目录的导航栏上输入cmd后回车(或者使用Vs Code或者WebStorm打开此项目工程,然后打开Terminal),在相关的窗口输入以下安装命令即可成功安装这些依赖

Snipaste_2024-06-24_10-06-00.png

Snipaste_2024-06-24_10-06-12.png

 
 
 

安装完成后,我们打开项目工程中的package.json文件,如果文件中出现如下图所示的依赖,表示已经安装成功。

Snipaste_2024-06-24_10-11-09.png

EFA22967F76B6CB91D675FB19BC56414.png

如(三)中的流程所示,上传前先会进行MD5的校验,根据文件内容生成的MD5值查询表中是否存在此文件,如果查询出存在此文件,则告诉前端从第几片开始传,反之则会从第一片开始传。

Snipaste_2024-06-26_11-18-20.png

Snipaste_2024-06-26_11-25-26.png

这里,我将文件上传进行了暂停的操作,这里展示一下文件上传暂停后是以什么样的形式存储的。

Snipaste_2024-07-08_10-03-19.png

上图就是文件一个一个的分片,一个分片是5M

Snipaste_2024-06-26_11-40-40.png

 

从图中上传的请求中,可以看到一共是189个分片,当它传到143片时,我点下了暂停键。

从请求中可以看到分片的大小是,文件总大小totalSize是,这里用文件总大小/分片大小得到了分片总数,一共是189片(这里是四舍五入后得到的)。

Snipaste_2024-06-26_11-51-14.png

当所有的分片文件上传成功后,会进行合并。

Snipaste_2024-06-26_11-59-26.png

合并成功后,会返回一个成功success的标识并自动关闭文件列表弹窗,然后重新请求文件管理列表数据。

​ (1)设计好对应的数据库,实现文件断点续传、闪传,需要新建两个数据表,一个是文件分片记录表,一个是已上传文件记录表。相关的数据表如下:

 

(2)新建ruoyi-fileupload模块,在pom.xml文件中将ruoyi-common引入进来

image-20240625151928881.png

(3)相关代码

后端所用的实体类

文件分片

 

文件列表

 

文件列表展示VO

 

分片上传检查实体类

 

后端Controller控制层

 

后端Service业务实现层

 

主要逻辑:当点击上传按钮上传文件时,前端它会把上传的文件根据你设定的分块的大小切分成多少块,而且会根据文件的内容计算出一个md5值,计算好之后,它会到后端先请求/fileUpload/api/upload这个接口(注意:controller控制层中这个接口有两个请求),首先它会走get请求,检查上传的文件是否已经存在,如果存在,直接返回true,证明上传过,会直接返回一个地址。检查完成后,如果它发现文件没有上传过,它会再发一个post请求。这里会根据你自定义分片的大小,把文件内容给你传过来,后端获取到后,会开始写入(因为这个项目过程中我没有配置OSS对象存储,所以我将文件是保存到了本地)。写完后,它会往sys_chunk这张表中添加一条数据,当chunkNumber 等于 分块的总数时,前端就会触发合并的请求,合并的方法中,会到你指定的位置去获取文件(这里文件夹的名称,就是你文件的md5值),获取完文件后会对文件进行排序(升序排列),排序完成后,会通过缓冲流逐个合并文件,合并完成后 ,会将其写入到你的目的地,最后再把原先的分块文件删掉。

前端相关的代码

前端上传的组件使用的是vue-simple-uploader,组件官方地址github.com/simple-uplo…

文件列表页面

 

上传组件部分的源码

 

main.js中添加图中框选的内容

Snipaste_2024-06-26_16-28-18.png

Snipaste_2024-06-26_16-28-57.png

vue.config.js中添加图中框选的内容

Snipaste_2024-06-26_16-32-12.png

Snipaste_2024-06-26_16-32-35.png

App.vue中添加图中框选的内容

Snipaste_2024-06-26_16-34-24.png

到此这篇若依文件上传(若依文件上传从后端限制文件类型)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • adsl已断开连接是什么意思(电脑上adsl断开是什么意思)2025-03-07 12:18:06
  • 无法访问samba共享目录(samba访问不了共享文件夹)2025-03-07 12:18:06
  • u盘制作工具纯净版怎么下载(u盘制作工具纯净版怎么下载不了)2025-03-07 12:18:06
  • seatel(Seatel卡没网络)2025-03-07 12:18:06
  • ip网址域名查询(网站域名解析ip)2025-03-07 12:18:06
  • 来自远方的小说 百度网盘(来自远方的小说txt百度云)2025-03-07 12:18:06
  • bt1120和bt656的区别(bt151和bt137)2025-03-07 12:18:06
  • 倍思蓝牙耳机怎么断开连接(倍思蓝牙耳机怎么断开连接电脑)2025-03-07 12:18:06
  • yml文件是干什么的(yml文件是干嘛的)2025-03-07 12:18:06
  • 蓝牙hid协议怎么看有没有(怎么看蓝牙耳机协议)2025-03-07 12:18:06
  • 全屏图片