程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(4)

Java中的附件上传

发布于2021-06-12 12:48     阅读(998)     评论(0)     点赞(15)     收藏(4)


在一般的项目中,在新增的界面时,基本都是存在附件上传的,上传的类型可以为图片、文件、视频等等。当然,如果我们不想要上传的文件,也可以通过移除,当我们上传的时候,并不是直接就保存到数据库中的,因为那样会存在一个问题,就是当我们上传了文件,但是我们并不保存当前数据,这样的话,附件就新增了一些没必要的数据了。
那么下面我来讲解一下:
我需要通过改变事件来进行附件的上传,也就是说,当我们点击新增的按钮的时候,让它触发的是另一个file文件选择器标签的事件,
在这里插入图片描述在这里插入图片描述
我们需要注意的是:不能漏enctype="multipart/form-data"这个属性
接下来,我就可以在触发file文件选择器的方法中直接写代码即可。
首先我需要判断选择的文件的长度是否大于0,如果大于0,那么我就声明一个加载层,并利用from表单提交来进行附件上传,提交后并把加载层给关闭。代码如下图:
在这里插入图片描述
接着简单地介绍一下MultipartFile:
它是一个接口,并继承自InputStreamSource,在接口里封装了一个getInputStream方法,因此它可以转换为输入流。
它可以接收使用多种请求方式来进行上传文件的代表形式(以表单的形式提交)。
它的文件内容可以存储到内存中或者存储在磁盘的临时文件夹中,然而这种临时性的存储,将会在请求结束之后被清除掉。
当我们在使用MultipartFile作为参数传递的时候,可以将MultipartFile声明为一个数组,这样就能支持多文件传输,如果只需要传输一个文件,则去掉数组就好了。
因为我上传文件并不是直接保存到数据库中,所以我就将文件信息保存到Session中,这样就会避免我刚刚说的那个问题。
首先,我们就需要创建一个实体类来接受相关的文件的字段,另外一定要把文件的唯一编码的字段添加进去,并且加上set和get方法,因为我们需要对每一条的文件信息进行移除操作。
实体类字段:
在这里插入图片描述
接着需要判断是否存在enctype=“multipart/form-data”,存在则创建一个Session来接受我的文件信息,还需要判断我们指定的Session中是否存在数据,另外需要创建一个新的数组对象,如果不为空,则把存在的数据,添加到新的数组对象中。
在这里插入图片描述
这时我们就需要构建上传临时文件夹的路径,接着需要检查临时文件夹目录是否存在,不存在就自动创建,然后判断MultipartFile接受的文件是否存在数据,存在的话,获取文件的文件名称、文件扩展名。
在这里插入图片描述
根据文件扩展名来判断文件是属于什么类型,然后我们需要将文件名改成当前时间,避免文件名称进行重复
接着我们利用UUID来生成通用唯一识别码,它是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的,是由一个十六位的数字组成,表现出来的形式。最后将我们获取到的文件信息利用set属性方法给赋值到当前对象中。
在这里插入图片描述
最后我们需要判断新的数组对象是否为空,不为空时,则将当前对象添加到新的数组对象中,将指定的Session移除掉,并将当前新的数组对象中的数据,赋给新的指定Session。接着创建目标File类,将当前的文件复制到指定的文件目录中。
在这里插入图片描述
效果图:
在这里插入图片描述在这里插入图片描述

原文链接:https://blog.csdn.net/weixin_44548147/article/details/117782464



所属网站分类: 技术文章 > 博客

作者:怎么没有鱼儿上钩呢

链接:http://www.javaheidong.com/blog/article/221920/3d91cb7c0ff6756229cb/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

15 0
收藏该文
已收藏

评论内容:(最多支持255个字符)