通用文件上传接口

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

文章目录


测试程序

测试程序

  /**
   * 通用上传请求
   */
  @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;

}

测试结果

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值