@RequestMapping接收文件格式的形参(方法参数)

需求:将文件上传到OSS,忽略域名与路径,将文件名以 "img1.png,img2.png,img3.png"保存到数据库中

1、先看结果

后端要接收postman传递的file文件

2、SpringBoot接收参数方式

很显然,上面postman上传的地方可以传入多个文件,所以我们可以用List<MultipartFile>接收文件

java 复制代码
// 图片文件
private List<MultipartFile> imageLst;

3、代码逻辑

java 复制代码
@PostMapping(value = "/uploadImageList", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@ApiOperation("批量上传封面图")
public R uploadImageList(@ModelAttribute UploadImageListInput input) {
····
}

重点:

1、这里要用@ModelAttribute而不是@RequestBody

2、为了接收date,要在 postmapping注解中中加入consumes = MediaType.MULTIPART_FORM_DATA_VALUE

3、获取上传文件的后缀名:

java 复制代码
public static final String getExtension(MultipartFile file) {
    String extension = FilenameUtils.getExtension(file.getOriginalFilename());
    if (StringUtils.isEmpty(extension)) {
        extension = MimeTypeUtils.getExtension(Objects.requireNonNull(file.getContentType()));
    }
    return extension;
}

4、番外篇:格式化字符串

整理存入数据库的格式:字符串+","+字符串

java 复制代码
public static void main(String[] args) {
    List<Integer> integerList = Arrays.asList(1, 2, 3, 4, 5);
    // 在每个数字后面加","但能保证最后一个数字后面不加","
    String join = String.join(",", integerList.stream()
            .map(String::valueOf)
            .collect(Collectors.toList()));
    System.out.println(join);
}

输出

java 复制代码
1,2,3,4,5
相关推荐
Hx_Ma162 小时前
SpringMVC框架提供的转发和重定向
java·开发语言·servlet
期待のcode3 小时前
原子操作类LongAdder
java·开发语言
舟舟亢亢3 小时前
Java集合笔记总结
java·笔记
小酒窝.3 小时前
【多线程】多线程打印ABC
java
乡野码圣4 小时前
【RK3588 Android12】RCU机制
java·jvm·数据库
JAVA+C语言4 小时前
如何优化 Java 多主机通信的性能?
java·开发语言·php
编程彩机5 小时前
互联网大厂Java面试:从分布式架构到大数据场景解析
java·大数据·微服务·spark·kafka·分布式事务·分布式架构
小酒窝.5 小时前
【多线程】多线程打印1~100
java·多线程
君爱学习5 小时前
基于SpringBoot的选课调查系统
java
APIshop6 小时前
Java 实战:调用 item_search_tmall 按关键词搜索天猫商品
java·开发语言·数据库