1. 修改下载文件接口,支持自定义是否需要打水印和是否需要下载文件

jinan_dev
xueqingkun 5 months ago
parent 619f5b162b
commit 3c7151010b

@ -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();

@ -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")

@ -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);

@ -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();

Loading…
Cancel
Save