* tif图片预览,在application.properties中加入tif.preview.type = ${KK_TIF_PREVIEW_TYPE:tif},可以控制使用tif、jpg、pdf方式预览。

修改相应代码,加入必要的判断处理。
This commit is contained in:
zhangzhen1979
2021-12-05 12:38:30 +08:00
committed by kl
parent b7760ab42a
commit 6dce47e47f
6 changed files with 86 additions and 38 deletions

View File

@ -7,9 +7,11 @@ import cn.keking.model.ReturnResponse;
import cn.keking.service.FilePreview;
import cn.keking.utils.ConvertPicUtil;
import cn.keking.utils.DownloadUtils;
import cn.keking.utils.WebUtils;
import cn.keking.web.filter.BaseUrlFilter;
import org.springframework.stereotype.Service;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import java.io.File;
import java.util.ArrayList;
@ -25,6 +27,9 @@ import java.util.UUID;
public class TiffFilePreviewImpl implements FilePreview {
private final PictureFilePreviewImpl pictureFilePreview;
private static final String INITIALIZE_MEMORY_SIZE = "initializeMemorySize";
//默认初始化 50MB 内存
private static final long INITIALIZE_MEMORY_SIZE_VALUE_DEFAULT = 1024L * 1024 * 50;
private final String fileDir = ConfigConstants.getFileDir();
@ -34,55 +39,72 @@ public class TiffFilePreviewImpl implements FilePreview {
@Override
public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) {
String inputFileName = url.substring(url.lastIndexOf("/") + 1);
String inputFileExt = inputFileName.substring(inputFileName.lastIndexOf(".") + 1);
String uuid = UUID.randomUUID().toString().replaceAll("-","");
String tiffFileName = uuid + "." + inputFileExt;
ReturnResponse<String> response = DownloadUtils.downLoad(fileAttribute, tiffFileName);
if (response.isFailure()) {
return NOT_SUPPORTED_FILE_PAGE;
}
String strTiffPath = response.getContent();
String tifPreviewType = ConfigConstants.getTifPreviewType();
File fileTiff = new File(strTiffPath);
if("tif".equalsIgnoreCase(tifPreviewType)){
File fileJpg = ConvertPicUtil.convertPic2Jpg(strTiffPath, fileDir + uuid + ".jpg");
pictureFilePreview.filePreviewHandle(url,model,fileAttribute);
String fileSize = WebUtils.getUrlParameterReg(url,INITIALIZE_MEMORY_SIZE);
if(StringUtils.hasText(fileSize)){
model.addAttribute(INITIALIZE_MEMORY_SIZE,fileSize);
}else {
model.addAttribute(INITIALIZE_MEMORY_SIZE,Long.toString(INITIALIZE_MEMORY_SIZE_VALUE_DEFAULT));
}
return TIFF_FILE_PREVIEW_PAGE;
if(fileJpg.exists()){
// 转换后的tif没用了可以删掉了
fileTiff.delete();
}else if("jpg".equalsIgnoreCase(tifPreviewType) || "pdf".equalsIgnoreCase(tifPreviewType)){
String inputFileName = url.substring(url.lastIndexOf("/") + 1);
String inputFileExt = inputFileName.substring(inputFileName.lastIndexOf(".") + 1);
String uuid = UUID.randomUUID().toString().replaceAll("-","");
String tiffFileName = uuid + "." + inputFileExt;
String baseUrl = BaseUrlFilter.getBaseUrl();
if("pdf".equalsIgnoreCase(fileAttribute.getOfficePreviewType())){
File filePdf = ConvertPicUtil.convertJpg2Pdf(fileDir + uuid + ".jpg", fileDir + uuid + ".pdf");
if(filePdf.exists()){
// 转换后的jpg没用了可以删掉了
fileJpg.delete();
ReturnResponse<String> response = DownloadUtils.downLoad(fileAttribute, tiffFileName);
if (response.isFailure()) {
return NOT_SUPPORTED_FILE_PAGE;
}
String strTiffPath = response.getContent();
String pdfUrl = baseUrl + uuid + ".pdf";
model.addAttribute("pdfUrl", pdfUrl);
File fileTiff = new File(strTiffPath);
return PDF_FILE_PREVIEW_PAGE;
File fileJpg = ConvertPicUtil.convertPic2Jpg(strTiffPath, fileDir + uuid + ".jpg");
if(fileJpg.exists()){
// 转换后的tif没用了可以删掉了
fileTiff.delete();
String baseUrl = BaseUrlFilter.getBaseUrl();
if("pdf".equalsIgnoreCase(tifPreviewType)){
File filePdf = ConvertPicUtil.convertJpg2Pdf(fileDir + uuid + ".jpg", fileDir + uuid + ".pdf");
if(filePdf.exists()){
// 转换后的jpg没用了可以删掉了
fileJpg.delete();
String pdfUrl = baseUrl + uuid + ".pdf";
model.addAttribute("pdfUrl", pdfUrl);
return PDF_FILE_PREVIEW_PAGE;
}
}else{
String jpgUrl = baseUrl + uuid + ".jpg";
fileAttribute.setName(uuid + ".jpg");
fileAttribute.setType(FileType.PICTURE);
fileAttribute.setSuffix("jpg");
fileAttribute.setUrl(jpgUrl);
List<String> imgUrls = new ArrayList<>();
imgUrls.add(jpgUrl);
model.addAttribute("imgUrls", imgUrls);
model.addAttribute("currentUrl", jpgUrl);
}
}else{
String jpgUrl = baseUrl + uuid + ".jpg";
fileAttribute.setName(uuid + ".jpg");
fileAttribute.setType(FileType.PICTURE);
fileAttribute.setSuffix("jpg");
fileAttribute.setUrl(jpgUrl);
List<String> imgUrls = new ArrayList<>();
imgUrls.add(jpgUrl);
model.addAttribute("imgUrls", imgUrls);
model.addAttribute("currentUrl", jpgUrl);
}
return PICTURE_FILE_PREVIEW_PAGE;
}
return PICTURE_FILE_PREVIEW_PAGE;
return NOT_SUPPORTED_FILE_PAGE;
}
}