package com.ard.file.controller; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import com.ard.common.core.domain.R; import com.ard.common.core.utils.StringUtils; import com.ard.common.core.utils.file.FileUtils; import com.ard.file.service.ISysFileService; import com.ard.system.api.domain.SysFile; /** * 文件请求处理 * * @author ard */ @Tag(name = "文件请求处理") @RestController public class SysFileController { private static final Logger log = LoggerFactory.getLogger(SysFileController.class); @Autowired private ISysFileService sysFileService; /** * 文件上传请求 */ @Operation(summary ="文件上传请求") @PostMapping("upload") public R upload(MultipartFile file) { try { // 上传并返回访问地址 String url = sysFileService.uploadFile(file); SysFile sysFile = new SysFile(); sysFile.setName(FileUtils.getName(url)); sysFile.setUrl(url); return R.ok(sysFile); } catch (Exception e) { log.error("上传文件失败", e); return R.fail(e.getMessage()); } } /** * 文件上传请求(带目录参数) * @param file 文件 * @param bucketName 桶名称 */ @PostMapping("uploadWithBucket") public R uploadWithBucket(@RequestPart("file")MultipartFile file, @RequestParam("bucketName") String bucketName) { try { // 上传并返回访问地址 String url = sysFileService.uploadFile(file, bucketName); SysFile sysFile = new SysFile(); sysFile.setName(FileUtils.getName(url)); sysFile.setUrl(url); return R.ok(sysFile); } catch (Exception e) { log.error("上传文件失败", e); return R.fail(e.getMessage()); } } @PostMapping("uploadWithPath") public R uploadWithPath(@RequestPart("file") MultipartFile file, @RequestParam("bucketName") String bucketName, @RequestParam("path") String path) { try { // 上传并返回访问地址 String url = sysFileService.uploadFile(file, bucketName, path); SysFile sysFile = new SysFile(); sysFile.setName(FileUtils.getName(url)); sysFile.setUrl(url); return R.ok(sysFile); } catch (Exception e) { log.error("上传文件失败", e); return R.fail(e.getMessage()); } } /** * 文件删除请求 */ @Operation(summary ="文件删除请求") @DeleteMapping("delete") public R delete(String fileUrl) { try { if (!FileUtils.validateFilePath(fileUrl)) { throw new Exception(StringUtils.format("资源文件({})非法,不允许删除。 ", fileUrl)); } sysFileService.deleteFile(fileUrl); return R.ok(); } catch (Exception e) { log.error("删除文件失败", e); return R.fail(e.getMessage()); } } }