From d528e0fe8937f884c6b010c1753c99b6d35b8d1e Mon Sep 17 00:00:00 2001 From: zhaowenyuan Date: Sat, 29 Jun 2024 11:41:38 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=B7=BB=E5=8A=A0=20=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=20=E6=96=87=E4=BB=B6=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chushang/oss/feign/RemoteOssService.java | 7 +++-- .../oss/remote/RemoteFileController.java | 13 ++++++--- .../oss/service/FileSourceService.java | 13 ++++++++- .../com/chushang/oss/service/OssService.java | 2 -- .../oss/service/impl/AliServiceImpl.java | 29 ++++++++++++++----- .../oss/service/impl/MinioServiceImpl.java | 26 ++++++++--------- 6 files changed, 60 insertions(+), 30 deletions(-) diff --git a/chushang-modules/chushang-module-oss/oss-feign/src/main/java/com/chushang/oss/feign/RemoteOssService.java b/chushang-modules/chushang-module-oss/oss-feign/src/main/java/com/chushang/oss/feign/RemoteOssService.java index 3ec899d..71f51ad 100644 --- a/chushang-modules/chushang-module-oss/oss-feign/src/main/java/com/chushang/oss/feign/RemoteOssService.java +++ b/chushang-modules/chushang-module-oss/oss-feign/src/main/java/com/chushang/oss/feign/RemoteOssService.java @@ -6,9 +6,7 @@ import com.chushang.common.core.web.Result; import com.chushang.oss.constants.OssConstants; import com.chushang.oss.entity.vo.FileSourceVo; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestHeader; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.File; @@ -47,5 +45,8 @@ public interface RemoteOssService { @RequestParam(value = "fileType", required = false) String fileType, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + @GetMapping("/file/{fid}") + Result getFile(@PathVariable(name = "fid") String fid,@RequestHeader(SecurityConstants.FROM_SOURCE) String source); + } diff --git a/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/remote/RemoteFileController.java b/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/remote/RemoteFileController.java index cb234e0..30b3270 100644 --- a/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/remote/RemoteFileController.java +++ b/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/remote/RemoteFileController.java @@ -7,10 +7,7 @@ import com.chushang.oss.entity.vo.FileSourceVo; import com.chushang.oss.feign.RemoteOssService; import com.chushang.oss.service.FileSourceService; import lombok.extern.slf4j.Slf4j; -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.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; @@ -56,5 +53,13 @@ public class RemoteFileController implements RemoteOssService { return Result.ok(fileSourceService.uploadFile(bytes, fileName, sealFlag, formats, fileType)); } + @Override + @SysLog(value = "feign文件", businessType = BusinessType.DOWNLOAD) + @GetMapping("/getFile/{fid}") + public Result getFile(@PathVariable String fid,String source) + { + return Result.ok(fileSourceService.getFile(fid)); + } + } diff --git a/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/service/FileSourceService.java b/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/service/FileSourceService.java index 6702a6b..615d0e6 100644 --- a/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/service/FileSourceService.java +++ b/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/service/FileSourceService.java @@ -258,7 +258,6 @@ public class FileSourceService String ip = IPUtils.clientIp(ServletUtils.getRequest()); String fid = generateFid(); String fName = file.getOriginalFilename(); - long length = file.getSize(); String md5 = FileUtils.getMd5(file.getInputStream()); // image/jpeg mimeType FileSourceInfo fileSourceInfo = new FileSourceInfo(); @@ -345,4 +344,16 @@ public class FileSourceService { return Collections.singletonList(addFile(bytes, fileName, sealFlag, formats, fileType)); } + + /** + * 根据文件id获取二进制文件 + * @param fid 文件id + */ + public byte[] getFile(String fid) { + FileSourceInfo info = getOne(new LambdaQueryWrapper() + .eq(FileSourceInfo::getFid, fid) + .last(Operator.LIMIT_ONE.getCharacter())); + if (ObjUtil.isEmpty(info)) return null; + return ossService.getFileBytes(info); + } } diff --git a/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/service/OssService.java b/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/service/OssService.java index a1ce4c8..b705271 100644 --- a/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/service/OssService.java +++ b/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/service/OssService.java @@ -55,8 +55,6 @@ public interface OssService { */ List delFileBatch(List keys); - InputStream getFileStream(FileSourceInfo info); - byte[] getFileBytes(FileSourceInfo info); } diff --git a/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/service/impl/AliServiceImpl.java b/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/service/impl/AliServiceImpl.java index b85d570..9d9285b 100644 --- a/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/service/impl/AliServiceImpl.java +++ b/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/service/impl/AliServiceImpl.java @@ -18,6 +18,9 @@ import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import javax.annotation.Resource; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Iterator; @@ -114,16 +117,28 @@ public class AliServiceImpl implements OssService { } return new ArrayList<>(); } - - @Override - public InputStream getFileStream(FileSourceInfo info) { - OSSObject object = oss.getObject(config.getBucketName(), info.getPath()); - return object.getObjectContent(); - } +// +// @Override +// public InputStream getFileStream(FileSourceInfo info) { +// OSSObject object = oss.getObject(config.getBucketName(), info.getPath()); +// return object.getObjectContent(); +// } @Override public byte[] getFileBytes(FileSourceInfo info) { - return new byte[0]; + OSSObject object = oss.getObject(config.getBucketName(), info.getPath()); + InputStream is = object.getObjectContent(); + try (ByteArrayOutputStream buffer = new ByteArrayOutputStream()){ + int nRead; + byte[] data = new byte[1024]; + while ((nRead = is.read(data, 0, data.length)) != -1) { + buffer.write(data, 0, nRead); + } + buffer.flush(); + return buffer.toByteArray(); + } catch (IOException e) { + throw new RuntimeException(e); + } } } diff --git a/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/service/impl/MinioServiceImpl.java b/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/service/impl/MinioServiceImpl.java index 8ba74bf..e80447a 100644 --- a/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/service/impl/MinioServiceImpl.java +++ b/chushang-modules/chushang-module-oss/oss-service/src/main/java/com/chushang/oss/service/impl/MinioServiceImpl.java @@ -204,19 +204,19 @@ public class MinioServiceImpl implements OssService { return resultKey; } - @Override - public InputStream getFileStream(FileSourceInfo info) { - try { - GetObjectResponse object = minio.getObject(GetObjectArgs.builder() - .bucket(config.getBucketName()) - .object(info.getPath()) - .build()); - return new ByteArrayInputStream(object.readAllBytes()); - } catch (Exception e) { - log.error("获取minio object error", e); - throw new ResultException("获取文件失败"); - } - } +// @Override +// public InputStream getFileStream(FileSourceInfo info) { +// try { +// GetObjectResponse object = minio.getObject(GetObjectArgs.builder() +// .bucket(config.getBucketName()) +// .object(info.getPath()) +// .build()); +// return new ByteArrayInputStream(object.readAllBytes()); +// } catch (Exception e) { +// log.error("获取minio object error", e); +// throw new ResultException("获取文件失败"); +// } +// } @Override public byte[] getFileBytes(FileSourceInfo info) {