文件上传

框架自带两种文件上传方式本地上传云存储,与前端紧密结合,前端会根据后端返回的上传模式进行本地上传或者云存储签名直传(不经过服务器,直接上传到对应的云存储)

使用

application.yml

cool:
    # 文件上传相关
    file:
        #上传模式
        mode: local
        # 本地上传配置
        local:
            # 文件根地址
            base-url: http://127.0.0.1:8001
            # 文件存放路径
            filePath: /Users/mac/Documents/src/cool/temp/
package com.cooljs.modules.base.controller.admin;

import cn.hutool.core.lang.Dict;
import com.cooljs.core.annotation.CoolRestController;
import com.cooljs.core.eps.CoolEps;
import com.cooljs.core.file.CoolFileUpload;
import com.cooljs.core.request.R;
import com.cooljs.modules.base.entity.sys.BaseSysUserEntity;
import com.cooljs.modules.base.service.sys.BaseSysLoginService;
import com.cooljs.modules.base.service.sys.BaseSysPermsService;
import com.cooljs.modules.base.service.sys.BaseSysUserService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

/**
 * 系统通用接口, 每个人都有权限操作
 */
@Tag(name = "系统通用", description = "系统通用")
@CoolRestController()
public class AdminBaseCommController {

    @Resource
    private BaseSysPermsService baseSysPermsService;

    @Resource
    private BaseSysUserService baseSysUserService;

    @Resource
    private BaseSysLoginService baseSysLoginService;

    @Resource
    private CoolEps coolEps;

    @Resource
    private CoolFileUpload coolFileUpload;


    @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(coolFileUpload.upload(files, request));
    }

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

TIP

动静分离有许多好处,如不占用主服务器带宽,防止上传恶意文件等。条件允许的话尽量选择云存储上传,如:oss 还可以对图片进行各种如压缩、裁剪、水印等处理,方便一张图片使用在多种场景。

OSS

application.yml

cool:
    # 文件上传相关
    file:
        mode: cloud
        # oss上传配置
        oss:
            access-key-id:
            access-key-secret:
            bucket:
            endpoint:
            timeout: 3600
Last Updated: