Springboot 文件上传小妙招

410 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第 11 天,点击查看活动详情

1 前言

在日常的开发过程中,经常会用到上传的功能,比如图片上传,虽然现在已经有了 OSS 对象存储来处理,但是对于小型项目来说,还是需要做图片存储的,在本文中将会介绍图片上传的知识。

2 普通上传存在的问题

一般情况下,在 javaweb 项目中上传文件或者图片会存在这样的问题,由于项目是编译的,所以上传的图片是存放在 target 目录中,随着下次项目启动,其上次上传的图片就会清除,因此需要把上传文件的目录不能存放在 target 目录,在本文中将会把文件存放在项目的 upload 文件夹下。

3 web 文件上传和预览

对于文件上传和预览,第一个问题即是如何获取文件上传的路径并且进行存储,第二个问题即是如何预览图片信息。

如下图所示,即可获取项目所在的路径信息:

文件上传的静态方法,用于存储文件,filePath 为文件存储路径,file 为上传的文件,如果文件夹不存在,则先创建然后再进行存储。文件的存储有两种方式:

// 使用hutool 工具类 FileUtil.writeBytes
FileUtil.writeBytes(file.getBytes(), new File(str));
// file 原生方法 transferTo 进行存储
file.transferTo(new File(str));

下图即是上传文件的方法:

在 controller 层,获取到上传的文件后,通过 AppUtils.upload 上传文件,然后将文件名称,原始文件名称以及存储的路径返回给前端。

具体返回内容如下所示:

至此,上传的部分已经完成,上传你的文件已经存放在项目目录 upload 中。

至于文件的预览,需要进行静态文件的配置,如下图所示,需要在配置文件中进行配置:

WebMvcConfigurationSupport.addResourceHandlers

一般情况下,项目的静态资源是不需要进行鉴权的,因此文件的上传和预览,需要再进行配置,以 springsecurity 为例,可以将上传和预览的路径配置。

在上述配置完成后,就可以进行文件的预览了。

4 总结

本文讲述了 springboot 文件上传的一些操作,通过指定文件的存储路径,以及图片预览的鉴权配置,积累了一些经验,另外在最大的收获就是如何预览图片,通过静态资源的配置即可达到目的。