发布于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黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!