通用文件上传接口

本文来记录一个通用的文件上传接口

文章目录

  • 测试程序


测试程序

测试程序

  /**
   * 通用上传请求
   */
  @PostMapping("/upload/file")
  @ResponseBody
  @ApiOperation(value = "上传文件")
  public ResponseBean<?> uploadFile(MultipartFile[] files) {
  
        //无文件返回错误
        if (files == null || files.length == 0) {
            return new ResponseBean<>(400, "无文件", -1);
        }
        //新文件名
        StringBuilder newFileName;
        //全部文件名,若多个,则逗号分隔
        StringBuilder allFileNames = new StringBuilder();
        //上传路径
        String fileSavePath = RuoYiConfig.getUploadPath();
        //若文件夹不存在,则创建文件夹
        //test.txt不会创建,故给任意值占位即可
        File parentFile = new File(fileSavePath + "test.txt").getParentFile();
        if (!parentFile.exists()) {
            parentFile.mkdirs();
        }
        //遍历所有文件
        for (MultipartFile file : files) {
            //得到原始文件名
            newFileName = new StringBuilder(file.getOriginalFilename());
            //查询文件名中点号所处位置
            int i = newFileName.lastIndexOf(".");
            //若点号位置大于0,则文件名正常
            if (i > 0) {
                //在点号前拼接UUID防止文件重名
                newFileName.insert(i, "_" + UUID.randomUUID().toString().substring(0, 5));
            } else {
                //若点号位置小于等于0,则文件名不规范
                return new ResponseBean<>(400, "文件'" + newFileName + "'名称不规范", -1);
            }
            try {
                // 保存文件
                file.transferTo(new File(fileSavePath + newFileName));
                //若全部文件名为空,则此为第一个文件,直接追加此文件名
                if (StringUtils.isBlank(allFileNames.toString())) {
                    allFileNames.append(newFileName);
                } else {
                    //若全部文件名不为空,则追加逗号和文件名
                    allFileNames
                            .append(",")
                            .append(newFileName)
                            .toString();
                }
            } catch (IOException e) {
                log.error("文件上传异常:\n" + e.getMessage());
                return new ResponseBean<>(500, "上传失败", -1);
            }
        }
        //返回全部文件名和文件路径
        HashMap<String, String> fileInfo = new HashMap<String, String>(2) {{
            put("fileNames", allFileNames.toString());
            put("filePath", fileSavePath);
        }};
        //返回信息
        return new ResponseBean<>(200, "上传成功", fileInfo);
    }

ResponseBean

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ResponseBean<T> {

    private Integer code;

    private String msg;

    private T data;

}

测试结果

通用文件上传接口_第1张图片
通用文件上传接口_第2张图片

你可能感兴趣的:(开发工具,java)