diff --git a/src/main/java/com/supervision/minio/client/MinioTemplate.java b/src/main/java/com/supervision/minio/client/MinioTemplate.java index 0b2edc3..574b9dc 100644 --- a/src/main/java/com/supervision/minio/client/MinioTemplate.java +++ b/src/main/java/com/supervision/minio/client/MinioTemplate.java @@ -1,6 +1,7 @@ package com.supervision.minio.client; import cn.hutool.core.io.IoUtil; +import cn.hutool.core.util.StrUtil; import com.supervision.minio.exception.SysObsException; import io.minio.*; import io.minio.errors.MinioException; @@ -87,7 +88,9 @@ public class MinioTemplate { response.setHeader("Content-Disposition", "inline;filename=" + fileName); response.setCharacterEncoding("UTF-8"); response.setContentLengthLong(statObjectResponse.size()); - response.setContentType(statObjectResponse.contentType()); + if (StrUtil.isEmpty(response.getContentType())){ + response.setContentType(statObjectResponse.contentType()); + } IoUtil.copy(inputStream, response.getOutputStream()); inputStream.close(); diff --git a/src/main/java/com/supervision/minio/controller/MinioController.java b/src/main/java/com/supervision/minio/controller/MinioController.java index 9cbfebe..05332d8 100644 --- a/src/main/java/com/supervision/minio/controller/MinioController.java +++ b/src/main/java/com/supervision/minio/controller/MinioController.java @@ -23,8 +23,13 @@ public class MinioController { } @GetMapping("/downloadFile") - public void downloadFile(@RequestParam String fileId, HttpServletResponse response) { - minioService.downloadFile(fileId, response); + public void downloadFile(@RequestParam("fileId") String fileId,@RequestParam(value = "printWaterMarket",defaultValue = "false") boolean printWaterMarket, + @RequestParam(value = "download",defaultValue = "false") boolean download,HttpServletResponse response) { + if (download){ + response.setContentType("application/octet-stream"); + } + minioService.downloadFile(fileId, printWaterMarket,response); + } @PostMapping("/delFile") diff --git a/src/main/java/com/supervision/minio/service/MinioService.java b/src/main/java/com/supervision/minio/service/MinioService.java index 0a6e524..e764230 100644 --- a/src/main/java/com/supervision/minio/service/MinioService.java +++ b/src/main/java/com/supervision/minio/service/MinioService.java @@ -15,7 +15,7 @@ public interface MinioService { String uploadFile(MultipartFile file, boolean temp) throws IOException; - void downloadFile(String fileId, HttpServletResponse response); + void downloadFile(String fileId, boolean printWaterMarket, HttpServletResponse response); void downloadFileWithWatermark(String fileId, String fileType, String waterMarkName, HttpServletResponse response); diff --git a/src/main/java/com/supervision/minio/service/impl/MinioServiceImpl.java b/src/main/java/com/supervision/minio/service/impl/MinioServiceImpl.java index ab80fb2..40e09e3 100644 --- a/src/main/java/com/supervision/minio/service/impl/MinioServiceImpl.java +++ b/src/main/java/com/supervision/minio/service/impl/MinioServiceImpl.java @@ -69,11 +69,17 @@ public class MinioServiceImpl implements MinioService { } @Override - public void downloadFile(String fileId, HttpServletResponse response) { + public void downloadFile(String fileId,boolean printWaterMarket, HttpServletResponse response) { MinioFile minioFile = minioFileMapper.selectById(fileId); + Assert.notNull(minioFile, "文件不存在"); String fileType = minioFile.getFileType(); - String waterMarkName = StrUtil.format(watermarkTemplate, Map.of("userName", UserUtil.getUser().getUserName())); - this.downloadFileWithWatermark(fileId, fileType, waterMarkName, response); + if (printWaterMarket){ + String waterMarkName = StrUtil.format(watermarkTemplate, Map.of("userName", UserUtil.getUser().getUserName())); + this.downloadFileWithWatermark(fileId, fileType, waterMarkName, response); + }else { + minioTemplate.getObject(bucketName, minioFile.getId(),fileType, response); + } + } @@ -92,16 +98,22 @@ public class MinioServiceImpl implements MinioService { if (StrUtil.equalsIgnoreCase("pdf", fileType)){ WatermarkUtil.pdfByText(inputStream, baos, waterMarkName, Map.of()); response.setContentLengthLong(baos.size()); - response.setContentType(statObjectResponse.contentType()); + if (StrUtil.isEmpty(response.getContentType())){ + response.setContentType(statObjectResponse.contentType()); + } response.getOutputStream().write(baos.toByteArray()); }else if (StrUtil.equalsAnyIgnoreCase(fileType,"jpg", "jpeg", "png","bmp")){ WatermarkUtil.imageByText(waterMarkName, inputStream, baos, Map.of("formatName", fileType)); - response.setContentType(statObjectResponse.contentType()); + if (StrUtil.isEmpty(response.getContentType())){ + response.setContentType(statObjectResponse.contentType()); + } response.setContentLengthLong(baos.size()); response.getOutputStream().write(baos.toByteArray()); }else { response.setContentLengthLong(statObjectResponse.size()); - response.setContentType(statObjectResponse.contentType()); + if (StrUtil.isEmpty(response.getContentType())){ + response.setContentType(statObjectResponse.contentType()); + } IoUtil.copy(inputStream, response.getOutputStream()); } baos.close();