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 请求实例

目录
相关文章
|
18天前
|
XML JSON Java
什么是RESTful
什么是RESTful
26 1
|
6月前
|
XML JSON 数据库
SpringMVC RESTful
SpringMVC RESTful
63 0
|
6月前
|
XML JSON Java
基于springMVC的RESTful服务实现
  RESTful(RESTful Web Services)一种架构风格,表述性状态转移,它不是一个软件,也不是一个标准,而是一种思想,不依赖于任何通信协议,但是开发时要成功映射到某协议时也需要遵循其标准,但不包含对通信协议的更改
64 1
|
XML 存储 前端开发
Restful的详细介绍~
Restful的详细介绍~
|
缓存 测试技术
SpringMVC的Restful风格
SpringMVC的Restful风格
49 0
|
JSON 缓存 网络架构
SpringMVC | Restful
SpringMVC | Restful
SpringMVC | Restful
|
JSON 前端开发 网络架构
SpringMVC-RESTful
SpringMVC-RESTful
|
XML JSON API
Restfule
+ 无状态 + 面向资源,即访问地址时使用的是名词形式 + 使用HTTP动词
SpringMVC RestFul风格实现
在controller层中定义如下的代码,代码会获取路径上的值并返回a和b的加和: RestFul风格的路径需要使用@PathVariable注解表示变量:
164 0
SpringMVC RestFul风格实现
|
JSON 缓存 API
6.2 Restful
讲解HTTP开发中Restful风格