From 703664701bfee921dd3c1f879d975d443520bef3 Mon Sep 17 00:00:00 2001 From: Diyu0904 <1819728964@qq.com> Date: Tue, 11 Mar 2025 13:03:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=A4=A7=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=88=86=E6=AE=B5=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/resource/FileController.java | 73 ++++++++++++++++--- mcwl-common/pom.xml | 10 ++- .../com/mcwl/common/utils/obs/ObsUtils.java | 2 +- 3 files changed, 70 insertions(+), 15 deletions(-) diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/FileController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/FileController.java index 00f61bb..ea35cb9 100644 --- a/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/FileController.java +++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/FileController.java @@ -11,6 +11,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -43,6 +44,10 @@ public class FileController { @Autowired private ObsClient obsClient; + @Value("${huawei.obs.bucketName}") + private String bucketName; + + /*** * * 图片 @@ -141,37 +146,40 @@ public class FileController { /** * 启动上传任务 */ - @GetMapping("/getUploadId/{objectKey}") - public String getUploadId(@PathVariable("objectKey")String objectKey) { - InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest("<桶名称>", objectKey); + @ApiOperation(value = "启动上传任务") + @GetMapping("/getUploadId") + public R getUploadId(@RequestParam("objectKey")String objectKey) { + InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, objectKey); ObjectMetadata metadata = new ObjectMetadata(); metadata.addUserMetadata("property", "property-value"); metadata.setContentType("text/plain"); request.setMetadata(metadata); InitiateMultipartUploadResult result = obsClient.initiateMultipartUpload(request); String uploadId = result.getUploadId(); - return uploadId; + return R.ok(uploadId); } /** * 分片上传 */ + @ApiOperation(value = "分片上传") @PostMapping("/chunk") - public Map splitFileUpload( + public R splitFileUpload( @RequestParam("objectKey")String objectKey, @RequestParam("file") MultipartFile file, @RequestParam("chunk") int chunk, @RequestParam("uploadId") String uploadId) throws Exception { File file1 = multipartFileToFile(file); Map map = uploadChunk(uploadId, file1, chunk, objectKey); - return map; + return R.ok(map); } /** * 合并上传 */ + @ApiOperation(value = "合并上传") @PostMapping("/completeUpload") - public CompleteMultipartUploadResult completeUpload( + public R completeUpload( @RequestParam("objectKey")String objectKey, @RequestParam("uploadId") String uploadId, @RequestBody List> mapList @@ -184,27 +192,31 @@ public class FileController { partEtags.add(part1); } CompleteMultipartUploadRequest request = new CompleteMultipartUploadRequest( - "<桶名称>", objectKey, uploadId, partEtags); + bucketName, objectKey, uploadId, partEtags); CompleteMultipartUploadResult result = obsClient.completeMultipartUpload(request); - return result; + + return R.ok(result); } /** * 取消任务上传 */ + @ApiOperation(value = "取消任务上传") @GetMapping("/cancelUpload") - public void cancelUpload( + public R cancelUpload( @RequestParam("objectKey")String objectKey, @RequestParam("uploadId") String uploadId ){ - AbortMultipartUploadRequest request = new AbortMultipartUploadRequest("<桶名称>", objectKey, uploadId); + AbortMultipartUploadRequest request = new AbortMultipartUploadRequest(bucketName, objectKey, uploadId); obsClient.abortMultipartUpload(request); + + return R.ok(); } public Map uploadChunk(String uploadId, File file,int chunk, String objectKey){ // Endpoint以北京四为例,其他地区请按实际情况填写。 Map map = new HashMap<>(); - UploadPartRequest request = new UploadPartRequest("<桶名称>", objectKey); + UploadPartRequest request = new UploadPartRequest(bucketName, objectKey); request.setUploadId(uploadId); request.setPartNumber(chunk); request.setFile(file); @@ -263,4 +275,41 @@ public class FileController { return fileService.selectHash(hashCode,type); } +// @PostMapping("/test") +// public R test(@RequestParam File file){ +// +// // 创建上传请求 +// ObjectMetadata metadata = new ObjectMetadata(); +// metadata.setContentLength(file.length()); +// InitiateMultipartUploadRequest initiateRequest = new InitiateMultipartUploadRequest(bucketName, file.getName(), metadata); +// InitiateMultipartUploadResult initiateResult = obsClient.initiateMultipartUpload(initiateRequest); +// String uploadId = initiateResult.getUploadId(); +// +// // 分片上传 +// long partSize = 5 * 1024 * 1024; // 分片大小为5MB +// long filePosition = 0; +// int partNumber = 1; +// while (filePosition < file.length()) { +// long currentPartSize = Math.min(partSize, file.length() - filePosition); +// UploadPartRequest uploadRequest = new UploadPartRequest(); +// uploadRequest.setBucketName(bucketName); +// uploadRequest.setObjectKey(file.getName()); +// uploadRequest.setUploadId(uploadId); +// uploadRequest.setFile(file); +// uploadRequest.setPartSize(currentPartSize); +// uploadRequest.setPartNumber(partNumber); +// uploadRequest.setPosition(filePosition); +// UploadPartResult uploadResult = obsClient.uploadPart(uploadRequest); +// PartEtag partEtag = new PartEtag(uploadResult.getEtag(), uploadResult.getPartNumber()); +// partNumber++; +// filePosition += currentPartSize; +// } +// +// // 完成分片上传 +// CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest(bucketName, file.getName(), uploadId); +// obsClient.completeMultipartUpload(completeRequest); +// String key = completeRequest.getObjectKey(); +// return R.ok(key); +// } + } diff --git a/mcwl-common/pom.xml b/mcwl-common/pom.xml index 1453c05..76a0c9d 100644 --- a/mcwl-common/pom.xml +++ b/mcwl-common/pom.xml @@ -395,7 +395,7 @@ 5.3.25 - + com.huaweicloud esdk-obs-java @@ -408,6 +408,12 @@ spring-boot-starter-websocket - + + + + huawei-public + https://repo.huaweicloud.com/repository/maven/ + + diff --git a/mcwl-common/src/main/java/com/mcwl/common/utils/obs/ObsUtils.java b/mcwl-common/src/main/java/com/mcwl/common/utils/obs/ObsUtils.java index f46abc5..91f766d 100644 --- a/mcwl-common/src/main/java/com/mcwl/common/utils/obs/ObsUtils.java +++ b/mcwl-common/src/main/java/com/mcwl/common/utils/obs/ObsUtils.java @@ -67,7 +67,7 @@ public class ObsUtils { LocalDateTime now = LocalDateTime.now(); String url = now.getYear() + "/" + - now.getMonth() + "/" + + now.getMonthValue() + "/" + now.getDayOfMonth() + "/" + uuid + "/" + name;