web应用项目开发实现上传文件功能

本文介绍了如何在SpringMVC项目中使用CommonsMultipartResolver处理文件上传,配置YML文件以指定上传路径、大小限制,并创建WebMvcConfigurer接口实现类,同时处理静态资源和文件上传的工具类。
摘要由CSDN通过智能技术生成

一.引入依赖

在pom文件中添加依赖,以使用CommonsMultipartResolver取代默认的Resovler处理文件上传。

二. 配置yml文件

1.排除默认的Resovler。

2.设置图片存放地址,图片上传大小等信息。

三. 创建实现类实现WebMvcConfigurer接口

  1. @Component:这个注解表示该类是一个组件,会被 Spring自动扫描并进行相关的管理和注入。

  2. @Value:这个注解用于将配置文件中的值注入到对应的变量中。在这里,path、maxPicSize 和 maxPerSize分别对应了配置文件中的 ${user.pic}、${pic.size} 和 ${pic.per.size}。

  3. addResourceHandlers方法:这个方法用于配置静态资源的访问路径。通过调用 ResourceHandlerRegistry 的 addResourceHandler 方法,可以指定某个 URL 路径访问静态资源,而 addResourceLocations 方法则指定了真实的资源路径。在这里,我通过 addResourceHandler("/**")将所有请求映射到静态资源路径,包括文件上传目录、static 目录、public 目录和 webapp 目录。

  4. multipartResolver 方法:这个方法用于创建一个 CommonsMultipartResolver 对象,用于解析请求中的文件上传数据。通过调用 setMaxUploadSize 和 setMaxUploadSizePerFile 方法,可以设置最大的上传文件大小和单个文件的最大大小。

四. 创建工具类

1.UPLOAD_PARAM_URL、UPLOAD_PARAM_ MESSAGE 和 UPLOAD_PARAM_STATUS:这些常量定义了返回结果的 JSON 对象中的键名。

·随机名称上传文件到指定目录

1.uploadWithRandomName 方法:这个方法使用随机生成的文件名将文件上传到指定目录。首先,获取原始文件名并提取文件后缀名。然后,使用 UUID.randomUUID() 生成一个唯一的文件名,并在后面拼接上文件后缀名。接下来,创建一个文件对象,并通过 file.transferTo(f) 方法将文件保存到指定目录。最后,将文件路径、上传成功信息和状态(true)封装为一个 JSON 对象并返回。

·原文件名称上传文件到指定目录

 1.uploadWithOriginalName 方法:这个方法使用原始文件名将文件上传到指定目录。首先,获取原始文件名,并检查是否包含 Unix 或 Windows 的路径分隔符。如果有分隔符,截取最后一个分隔符之后的字符串作为文件名。然后,创建一个文件对象,并通过 file.transferTo(f) 方法将文件保存到指定目录。最后,将文件路径、上传成功信息和状态(true)封装为一个 JSON 对象并返回。

 五.创建控制类

1.@Value("${user.pic}") private String path;:这行代码使用了 @Value 注解,将配置文件中名为 user.pic 的属性的值注入到 path 变量中,从而指定了上传文件的保存路径。

public final class ApiConstant {
        private ApiConstant(){}
        public static final String ROUTE_UPLOAD="/upload";
}

2.@PostMapping(ApiConstant.ROUTE_UPLOAD):这个注解表示该方法处理 POST 请求,并且处理的 URL 是 ApiConstant.ROUTE_UPLOAD,即 /upload。

3.@RequestParam("avatar") MultipartFile file:这个注解表示将请求参数 avatar 对应的值(即上传的文件)注入到 file 变量中。MultipartFile 是 Spring 框架提供的一个用于处理文件上传的接口,它封装了上传的文件内容、文件名等信息。

4.FileUtil.uploadWithRandomName(file,path):这个方法使用了一个工具类 FileUtil 中的静态方法 uploadWithRandomName,将上传的文件保存到指定的路径下,并返回一个包含上传结果信息的 JSON 对象。

5.return new ApiResult(...):这行代码创建了一个 ApiResult 对象,将上传结果封装成 JSON 格式并返回给客户端。

六.接口调用

涉及到文件上传,使用Postman应用测试接口。

 上传文件成功!

  • 32
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值