diff --git a/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java b/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java index 2d6216b..0be984e 100644 --- a/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java +++ b/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java @@ -34,11 +34,19 @@ public class ServerFileController implements ServerFileServiceApi { public CommonResponse upload(@Valid @RequestBody ServerFileUploadRequest request) { ServerFileUploadDto dto = BeanConvertUtil.copyBean(request, ServerFileUploadDto.class); request.setFileContent(null); - return CommonResponse.success(BeanConverter.convert(fileService.upload(dto),ServerFileUploadResponse.class)); + return CommonResponse.success(BeanConverter.convert(fileService.upload(dto), ServerFileUploadResponse.class)); + } + + @Override + public CommonResponse uploadV2(ServerFileUploadRequest request) { + ServerFileUploadDto dto = BeanConvertUtil.copyBean(request, ServerFileUploadDto.class); + request.setFileContent(null); + return CommonResponse.success(BeanConverter.convert(fileService.uploadV2(dto), FileInformationResponse.class)); } /** * 根据文件url删除文件 + * * @param request * @return */ @@ -51,6 +59,7 @@ public class ServerFileController implements ServerFileServiceApi { /** * 获取文件url + * * @param request * @return */ @@ -62,6 +71,7 @@ public class ServerFileController implements ServerFileServiceApi { /** * 获取文件key,用于历史数据清理 + * * @param request * @return */ 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 index f45a2ca..e8531e4 100644 --- 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 @@ -1,11 +1,13 @@ package cn.axzo.oss.client.controller; import cn.axzo.core.utils.converter.BeanConverter; +import cn.axzo.oss.client.vo.FileInformationVo; import cn.axzo.oss.client.vo.FindFileUrlVo; import cn.axzo.oss.client.vo.WebFileUploadVo; import cn.axzo.oss.common.utils.BeanConvertUtil; import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto; import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto; +import cn.axzo.oss.manager.api.dto.response.FileInformationResponse; import cn.axzo.oss.manager.api.dto.response.FindFileUrlResponse; import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse; import cn.axzo.oss.service.api.FileService; @@ -59,4 +61,21 @@ public class WebFileController { List response = fileService.findFileUrl(dto); return CommonResponse.success(BeanConverter.convert(response, FindFileUrlVo.class)); } + + @PostMapping("/v2/file") + @CrossOrigin + @SneakyThrows + public CommonResponse uploadV2(@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(); + FileInformationResponse response = fileService.uploadV2(fileUploadDto); + FileInformationVo result = BeanConvertUtil.copyBean(response, FileInformationVo.class); + return CommonResponse.success(result); + } } diff --git a/oss-client/src/main/java/cn/axzo/oss/client/vo/FileInformationVo.java b/oss-client/src/main/java/cn/axzo/oss/client/vo/FileInformationVo.java new file mode 100644 index 0000000..b49c0ce --- /dev/null +++ b/oss-client/src/main/java/cn/axzo/oss/client/vo/FileInformationVo.java @@ -0,0 +1,24 @@ +package cn.axzo.oss.client.vo; + +import lombok.Data; + +@Data +public class FileInformationVo { + /** + * 文件 URL + */ + private String url; + /** + * 文件名称 + */ + private String fileName; + /** + * 文件大小 + */ + private Long fileSize; + + /** + * URL MD5 + */ + private String urlMd5; +} diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java b/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java index 20c9f18..66261bb 100644 --- a/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java @@ -29,6 +29,14 @@ public interface ServerFileServiceApi { @RequestMapping(value = "/api/v1/server/upload", method = RequestMethod.POST) CommonResponse upload(ServerFileUploadRequest request); + /** + * 上传文件 + * @param request + * @return + */ + @RequestMapping(value = "/api/v2/server/upload", method = RequestMethod.POST) + CommonResponse uploadV2(ServerFileUploadRequest request); + /** * 删除文件 * @param request diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/model/FileInformationResponse.java b/oss-http-api/src/main/java/cn/axzo/oss/http/model/FileInformationResponse.java new file mode 100644 index 0000000..f7d3856 --- /dev/null +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/model/FileInformationResponse.java @@ -0,0 +1,23 @@ +package cn.axzo.oss.http.model; + +import lombok.Data; + +@Data +public class FileInformationResponse { + /** + * 文件 URL + */ + private String url; + /** + * 文件名称 + */ + private String fileName; + /** + * 文件大小 + */ + private Long fileSize; + /** + * URL MD5 + */ + private String urlMd5; +} diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FileInformationResponse.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FileInformationResponse.java new file mode 100644 index 0000000..73cc490 --- /dev/null +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FileInformationResponse.java @@ -0,0 +1,24 @@ +package cn.axzo.oss.manager.api.dto.response; + +import lombok.Data; + +@Data +public class FileInformationResponse { + /** + * 文件 URL + */ + private String url; + /** + * 文件名称 + */ + private String fileName; + /** + * 文件大小 + */ + private Long fileSize; + + /** + * URL MD5 + */ + private String urlMd5; +} diff --git a/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java b/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java index cc098e9..8de549d 100644 --- a/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java +++ b/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java @@ -4,6 +4,7 @@ import cn.axzo.oss.manager.api.dto.request.FindFileKeyDto; import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto; import cn.axzo.oss.manager.api.dto.request.ServerFileDeleteDto; import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto; +import cn.axzo.oss.manager.api.dto.response.FileInformationResponse; import cn.axzo.oss.manager.api.dto.response.FindFileKeyResponse; import cn.axzo.oss.manager.api.dto.response.FindFileUrlResponse; import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse; @@ -35,4 +36,6 @@ public interface FileService { List findFileUrl(FindFileUrlDto dto); List findFileKey(FindFileKeyDto dto); + + FileInformationResponse uploadV2(ServerFileUploadDto request); } diff --git a/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java b/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java index e099bcf..2972b23 100644 --- a/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java +++ b/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java @@ -20,6 +20,7 @@ import cn.axzo.oss.manager.api.dto.request.FindFileKeyDto; import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto; import cn.axzo.oss.manager.api.dto.request.ServerFileDeleteDto; import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto; +import cn.axzo.oss.manager.api.dto.response.FileInformationResponse; import cn.axzo.oss.manager.api.dto.response.FindFileKeyResponse; import cn.axzo.oss.manager.api.dto.response.FindFileUrlResponse; import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse; @@ -113,6 +114,17 @@ public class FileServiceImpl implements FileService { */ @Override public ServerFileUploadResponse upload(ServerFileUploadDto dto) { + File ossFile = uploadFileAndGetFile(dto); + return setResponse(ossFile); + } + + @Override + public FileInformationResponse uploadV2(ServerFileUploadDto request) { + File ossFile = uploadFileAndGetFile(request); + return setFileInfoResp(ossFile); + } + + private File uploadFileAndGetFile(ServerFileUploadDto dto) { log.info("update fileName:{},appCode:{},bizScene:{}", dto.getFileName(), dto.getAppCode(), dto.getBizScene()); // 检查appCode @@ -128,11 +140,8 @@ public class FileServiceImpl implements FileService { // 通过渠道码和桶名称获取获取指定上传配置 FileUploadConfig fileUploadConfig = fileUploadConfigManager .getByUploadConfig(scene.getAppChannelBucketNo(), scene.getDirectory()); - // 上传文件并生成file对象 - File ossFile = generateFile(fileUploadConfig, dto); - - return setResponse(ossFile); + return generateFile(fileUploadConfig, dto); } @Override @@ -261,4 +270,11 @@ public class FileServiceImpl implements FileService { return response; } + private FileInformationResponse setFileInfoResp(File ossFile) { + FileInformationResponse resp = new FileInformationResponse(); + resp.setUrl(ossFile.getFileUrl()); + resp.setFileName(ossFile.getFileName()); + resp.setUrlMd5(ossFile.getUrlMd5()); + return resp; + } }