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