Skip to content

文件上传

框架自带两种文件上传方式本地上传与云存储,与前端紧密结合,

前端会根据后端返回的上传模式进行本地上传或者云存储签名直传(不经过服务器,直接上传到对应的云存储)

  • 本地上传
  • 云存储,如阿里云、腾讯云、七牛云等

TIP

安装云存储插件,如 Oss,系统的文件上传就会自动替换成云存储上传的方式,云存储上传服务端值提供签名供前端直传到对应的云存储

使用

application.yml

yaml
cool:
  # 文件上传相关
  file:
    #上传模式
    mode: local
    # 本地上传配置
    local:
      # 文件根地址
      base-url: http://127.0.0.1:${server.port}
      # 可选,文件存放路径 线上环境请用nginx等静态服务器代理
      filePath:

动静分离有许多好处,如不占用主服务器带宽,防止上传恶意文件等。

条件允许的话尽量选择云存储上传,如:oss 还可以对图片进行各种如压缩、裁剪、水印等处理,方便一张图片使用在多种场景。

java
@RequiredArgsConstructor
@Tag(name = "系统通用", description = "系统通用")
@CoolRestController()
public class AdminBaseCommController {
    final private FileUploadStrategyFactory fileUploadStrategyFactory;

    @Operation(summary = "文件上传")
    @PostMapping(value = "/upload", consumes = {MediaType.MULTIPART_FORM_DATA_VALUE,
        MediaType.ALL_VALUE})
    public R upload(
        @RequestPart(value = "file", required = false) @Parameter(description = "文件") MultipartFile[] files,
        HttpServletRequest request) {
        return R.ok(fileUploadStrategyFactory.upload(files, request));
    }

    @Operation(summary = "文件上传模式")
    @GetMapping("/uploadMode")
    public R uploadMode() {
        return R.ok(fileUploadStrategyFactory.getMode());
    }
}