From f20bc55e5f9af8fda5c4005d55093a821b63e1fc Mon Sep 17 00:00:00 2001 From: zhangtianyu Date: Thu, 14 Apr 2022 21:09:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0web=E7=AB=AF=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E6=96=87=E4=BB=B6=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/controller/WebFileController.java | 47 +++++++++++++++++++ .../handler/ControllerExceptionHandler.java | 7 +++ .../axzo/oss/client/vo/WebFileUploadVo.java | 22 +++++++++ .../cn/axzo/oss/common/enums/CodeEnum.java | 1 + .../api/dto/request/ServerFileUploadDto.java | 8 +++- 5 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 oss-client/src/main/java/cn/axzo/oss/client/controller/WebFileController.java create mode 100644 oss-client/src/main/java/cn/axzo/oss/client/vo/WebFileUploadVo.java diff --git a/oss-client/src/main/java/cn/axzo/oss/client/controller/WebFileController.java b/oss-client/src/main/java/cn/axzo/oss/client/controller/WebFileController.java new file mode 100644 index 0000000..3397700 --- /dev/null +++ b/oss-client/src/main/java/cn/axzo/oss/client/controller/WebFileController.java @@ -0,0 +1,47 @@ +package cn.axzo.oss.client.controller; + +import cn.axzo.oss.client.vo.WebFileUploadVo; +import cn.axzo.oss.common.utils.BeanConvertUtil; +import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto; +import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse; +import cn.axzo.oss.service.api.FileService; +import cn.azxo.framework.common.model.CommonResponse; +import lombok.SneakyThrows; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.validation.Valid; + +/** + * 前端文件controller + * + * @author zhangtianyu + * @date 2022/4/14 2:56 PM + **/ +@RestController +@RequestMapping("/webApi") +public class WebFileController { + @Resource + private FileService fileService; + + @SneakyThrows + @PostMapping("/v1/file") + public CommonResponse upload(@Valid @RequestParam String appCode, + @Valid @RequestParam String bizScene, + @Valid @RequestParam MultipartFile file) { + ServerFileUploadDto fileUploadDto = ServerFileUploadDto.builder() + .appCode(appCode) + .bizScene(bizScene) + .fileName(file.getOriginalFilename()) + .fileContent(file.getBytes()) + .build(); + ServerFileUploadResponse response = fileService.upload(fileUploadDto); + WebFileUploadVo result = BeanConvertUtil.copyBean(response, WebFileUploadVo.class); + return CommonResponse.success(result); + } + +} diff --git a/oss-client/src/main/java/cn/axzo/oss/client/handler/ControllerExceptionHandler.java b/oss-client/src/main/java/cn/axzo/oss/client/handler/ControllerExceptionHandler.java index ea5cf44..bfb854c 100644 --- a/oss-client/src/main/java/cn/axzo/oss/client/handler/ControllerExceptionHandler.java +++ b/oss-client/src/main/java/cn/axzo/oss/client/handler/ControllerExceptionHandler.java @@ -10,6 +10,7 @@ import org.springframework.dao.DuplicateKeyException; import org.springframework.validation.BindingResult; import org.springframework.validation.FieldError; import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.MissingServletRequestParameterException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; @@ -23,6 +24,12 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; @RestControllerAdvice public class ControllerExceptionHandler { + @ExceptionHandler(value = MissingServletRequestParameterException.class) + public CommonResponse handleMissingRequestParam(MissingServletRequestParameterException e) { + log.warn("[oss] ControllerExceptionHandler.missing servlet request parameter Exception", e); + return CommonResponse.error(CodeEnum.MISSING_REQUEST_PARAM.getCode(), e.getMessage()); + } + @ExceptionHandler(value = BizException.class) public CommonResponse bizException(BizException e){ log.warn("[oss] ControllerExceptionHandler.bizException Exception", e); diff --git a/oss-client/src/main/java/cn/axzo/oss/client/vo/WebFileUploadVo.java b/oss-client/src/main/java/cn/axzo/oss/client/vo/WebFileUploadVo.java new file mode 100644 index 0000000..4ffa7f5 --- /dev/null +++ b/oss-client/src/main/java/cn/axzo/oss/client/vo/WebFileUploadVo.java @@ -0,0 +1,22 @@ +package cn.axzo.oss.client.vo; + +import lombok.Data; + +/** + * 前端上传文件返回实体 + * + * @author zhangtianyu + * @date 2022/4/14 3:26 PM + **/ +@Data +public class WebFileUploadVo { + private String url; + /** + * 文件 Key + */ + private String fileKey; + /** + * URL MD5 + */ + private String urlMd5; +} diff --git a/oss-common/src/main/java/cn/axzo/oss/common/enums/CodeEnum.java b/oss-common/src/main/java/cn/axzo/oss/common/enums/CodeEnum.java index e8323bc..b077d45 100644 --- a/oss-common/src/main/java/cn/axzo/oss/common/enums/CodeEnum.java +++ b/oss-common/src/main/java/cn/axzo/oss/common/enums/CodeEnum.java @@ -40,6 +40,7 @@ public enum CodeEnum implements EnumBase { NOT_FILE_FORMAT(108,"failed to get file format"), FILE_FORMAT_NOT_SUPPORTED(109,"file format is not supported"), FILE_UPLOAD_FAILED(109,"file upload failed"), + MISSING_REQUEST_PARAM(110, "missing request param"), ; diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/ServerFileUploadDto.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/ServerFileUploadDto.java index c290db6..4a864c2 100644 --- a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/ServerFileUploadDto.java +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/ServerFileUploadDto.java @@ -1,8 +1,9 @@ package cn.axzo.oss.manager.api.dto.request; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; /** * @program: oss @@ -11,6 +12,9 @@ import lombok.Data; * @date: 2021-07-29 18:31 **/ @Data +@Builder +@NoArgsConstructor +@AllArgsConstructor public class ServerFileUploadDto { private String appCode; private String bizScene;