Restful实现多文件上传

简介: Restful实现多文件上传

1 实例代码

以下代码都是经过测试可直接使用

    @ApiOperation(value = "上传多文件", notes = "上传多文件")
    @ApiResponses({
            @ApiResponse(code = 503, message = "服务不可用"),
            @ApiResponse(code = 404, message = "请求不存在"),
            @ApiResponse(code = 200, message = "服务器成功返回"),
            @ApiResponse(code = 501, message = "暂时没有实现"),
            @ApiResponse(code = 400, message = "请求参数没填写好")})
    @RequestMapping(value = "/uploadPictures", method = RequestMethod.POST)
    public ResponseEntity<JSONArray> uploadPictures(List<MultipartFile> files) {
        return new ResponseEntity<>(fileInfoService.uploadFiles(files), HttpStatus.OK);
    }
    @Override
    public JSONArray uploadFiles(List<MultipartFile> file) throws ApiException {
        JSONArray jsonArray=new JSONArray();
        for (MultipartFile multipartFile : file) {
            FileInfo fileInfo = this.uploadFile(multipartFile);
            jsonArray.add(fileInfo.getId().toString());
        }
        return jsonArray;
    }
   @Override
    public FileInfo uploadFile(MultipartFile multipartFile) throws ApiException {
        Date date=new Date();
        long time = date.getTime();
        FileInfo fileInfo = new FileInfo();
        byte[] bytes = new byte[0];
        try {
            bytes = multipartFile.getBytes();
        } catch (IOException e) {
            e.printStackTrace();
        }
        String suffix  = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".") + 1);
        String filePath = System.getProperty("user.home") + File.separator+"lcls"+File.separator+"fileInfo"+File.separator +time+"."+suffix;
        FileWriter fileWriter = new FileWriter(filePath);
        fileWriter.write(bytes, 0, bytes.length);
        fileInfo.setFileRealName(multipartFile.getOriginalFilename());
        fileInfo.setFileSysName(time+"."+suffix);
        fileInfo.setFileType(multipartFile.getContentType());
        fileInfo.setExtensions(suffix);
        fileInfo.setFileSize((long) bytes.length);
        fileInfo.setPath(filePath);
        this.save(fileInfo);
        return fileInfo;
    }

2 遇到的坑

做到文件上传,单文件上传时一切正常,多文件时files参数一直为null,代码如下:

d04c9185ed944601a28f9a5fd0b98ff7.png

因为平时一直都使用swagger测试接口,之所以用swagger获取不到files,是因为swagger不支持在一个参数中上传文件数组,如果上传就会传递空值。踩坑踩了好久,但是在前端直接用form表单上传时可以的,建议测试多文件上传时用postman进行测试。

3 请求实例

目录
相关文章
|
SQL JavaScript 前端开发
VUE3(三十二)vue使用xlsx解析excel文件
工作中发现了一个比较有意思的前端插件xlsx,可以解析excel文件。 之前上传excel文件一般前端只负责文件上传,文件上传成功之后在后端进行解析,后端解析excel的时候使用的是phpexcel,也还是挺方便的
1670 0
|
JSON Java 数据格式
使用postMan调试接口出现 Content type ‘multipart/form-data;charset=UTF-8‘ not supported“
本文介绍了使用Postman调试接口时遇到的“Content type ‘multipart/form-data;charset=UTF-8’ not supported”错误,原因是Spring Boot接口默认只接受通过`@RequestBody`注解的请求体,而不支持`multipart/form-data`格式的表单提交。解决方案是在Postman中将请求体格式改为`raw`并选择`JSON`格式提交数据。
使用postMan调试接口出现 Content type ‘multipart/form-data;charset=UTF-8‘ not supported“
|
XML Java Kotlin
springboot + minio + kkfile实现文件预览
本文介绍了如何在容器中安装和启动kkfileviewer,并通过Spring Boot集成MinIO实现文件上传与预览功能。首先,通过下载kkfileviewer源码并构建Docker镜像来部署文件预览服务。接着,在Spring Boot项目中添加MinIO依赖,配置MinIO客户端,并实现文件上传与获取预览链接的接口。最后,通过测试验证文件上传和预览功能的正确性。
2053 4
springboot + minio + kkfile实现文件预览
|
JSON JavaScript 数据格式
Vue路由params、query参数丢失解决
该文章介绍了在Vue中使用`params`和`query`进行路由参数传递时,如何通过`sessionStorage`或`localStorage`解决参数丢失的问题。
1145 3
|
开发框架 前端开发 JavaScript
在Winform开发中,使用Async-Awati异步任务处理代替BackgroundWorker
在Winform开发中,使用Async-Awati异步任务处理代替BackgroundWorker
|
缓存 安全 应用服务中间件
Nginx:关于实现跨域代理
Nginx:关于实现跨域代理
2743 1
|
网络协议 安全 Unix
详解 TCP 原理
详解 TCP 原理
Intellij idea 生成带注释的get/set
Intellij idea 生成带注释的get/set
1011 0
|
存储 开发框架 前端开发
基于SqlSugar的开发框架循序渐进介绍(10)-- 利用axios组件的封装,实现对后端API数据的访问和基类的统一封装处理
基于SqlSugar的开发框架循序渐进介绍(10)-- 利用axios组件的封装,实现对后端API数据的访问和基类的统一封装处理
|
监控 算法 Java
在Linux中,如何进行Java应用性能调优?
在Linux中,如何进行Java应用性能调优?

热门文章

最新文章