multipartfile获取文件后缀名_SpringBoot实现文件上传

本文介绍如何使用SpringBoot实现文件的网络上传与下载功能。包括项目搭建、配置、Service及Controller接口实现等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

又是好几百年没写知乎了,刚买的AirPods Pro今天丢失了,完整一个盒子加耳机,2000大洋上个月刚买,还热着呢,今天就掉了。贼鸡儿心痛。AirPods Pro 变成了Air了。唉,希望是在公司丢的,这样捡到的人或许还有可能归还我。

痛腚思痛,最近因为需要用到文件上传和下载的功能,因此把这些功能实现提取出来希望能帮助到大家,学习一下如何用SpringBoot实现RESTFul风格的这些接口。

你将学习到:

  1. 如何简单使用SpringBoot实现RESTFul的HTTP API
  2. 如何完成对文件的网络上传和下载

代码已经放在了GitHub上

wangruifei/file-demo​github.com
119571e087e2c1e58a85e143a7e91f4a.png

可以下载下来直接看代码是如何实现的,也可以不看代码直接看下文。

第一步:创建你的项目

  1. 去http://start.spring.io/
  2. 输入如下信息,记得“依赖Dependencies”里面添加一个Spring web

ac7a94e89f2e87f4e8d787a40562d3ae.png

3. 点击“生成”就会生成一个SpringBoot项目

4. 用你喜欢的IDE打开这个项目,加载一下maven依赖,项目的壳就搭建好了

第二步:进行项目配置

  1. 在src/main/resources/application.properties文件里进行如下配置
## 

上述的配置中,我们在SpringBoot的配置文件里设置上传上来的文件存储到file.upload-dir指向的位置,但是这个参数不是SpringBoot目前自带的参数,是我们自己定义的一个配置参数,如何让它映射到我们的Java文件中呢?

SpringBoot提供了一个非常好用的注解,叫做@ConfigurationProperties,下文直接告诉你怎么用

我们创建了一个类FileStorageProperties,这个类就是将application.properties里面提到的相关配置项塞到这个FileStorageProperties的相关字段中,那么我们后续写代码就可以直接拿来用了

package 

其中的prefix ="file" 就是告诉SpringBoot我要取application.properties里面以file前缀开头的配置项进行映射,如file.upload-dir它的前缀就是file,然后会把upload-dir映射到FileStorageProperties中的uploadDir,方便又快捷,简直好用,馋哭了隔壁家的程序员。

当然想要在SpringBoot中让这个@ConfigurationProperties生效,还需要在你的SpringBoot启动类上添加@EnableConfigurationProperties注解,如下

package 

第三步:实现Service和Controller接口

  1. 先定义我们的Service接口
package 

其中storeFile方法是接受一个MultipartFile的文件类型参数进行存储操作,loadFileAsResource接受一个以URI作为文件名的参数来获取文件进行下载(URI跟URL差不多,不过URI一定能确定资源的位置,URL不一定,比如http://localhost:8080/helloword.jpg和/helloWord.jpg都是URL但是前者是URI后者不是URI),其中下载接口返回类型是Resource,它将文件抽象为资源,并且提供了很多非常好用的方法,如获取文件,获取其URL和绝对路径等。

2. 实现我们的Service接口

实现接口之前我定义过了一个关于File的Exception,当然这个并不是必要的,但是如果想要创建自己自定义的Exception也是OK的

package 
package 

3. 实现Controller接口

当设计Controller接口的时候就要考虑应该返回的Response类型,这里因为是demo所以直接定义了一个UploadFileResponse的类用作Controller层的response返回值

package 

FileController类的实现

package 

好了,一个简单的 实现文件上传和下载的功能就完成了,下面就可以用PostMan进行测试了

17905d23950430fc871450c81d8be455.png
上传文件

49c5abde4d406a82da9c1e5e8fe39141.png
下载文件

其他接口测试同理,不再赘述。

拜~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值