diff --git a/jodconverter-web/src/main/java/cn/keking/service/impl/PdfFilePreviewImpl.java b/jodconverter-web/src/main/java/cn/keking/service/impl/PdfFilePreviewImpl.java index 05d358d0..e631d7f5 100644 --- a/jodconverter-web/src/main/java/cn/keking/service/impl/PdfFilePreviewImpl.java +++ b/jodconverter-web/src/main/java/cn/keking/service/impl/PdfFilePreviewImpl.java @@ -39,7 +39,6 @@ public class PdfFilePreviewImpl implements FilePreview{ String fileName=fileAttribute.getName(); String officePreviewType = model.asMap().get("officePreviewType") == null ? ConfigConstants.getOfficePreviewType() : model.asMap().get("officePreviewType").toString(); String baseUrl = BaseUrlFilter.getBaseUrl(); - model.addAttribute("pdfUrl", url); String pdfName = fileName.substring(0, fileName.lastIndexOf(".") + 1) + "pdf"; String outFilePath = fileDir + pdfName; if (OfficeFilePreviewImpl.OFFICE_PREVIEW_TYPE_IMAGE.equals(officePreviewType) || OfficeFilePreviewImpl.OFFICE_PREVIEW_TYPE_ALLIMAGES.equals(officePreviewType)) { @@ -64,6 +63,20 @@ public class PdfFilePreviewImpl implements FilePreview{ } else { return "picture"; } + } else { + // 不是http开头,浏览器不能直接访问,需下载到本地 + if (url != null && !url.toLowerCase().startsWith("http")) { + ReturnResponse response = downloadUtils.downLoad(fileAttribute, pdfName); + if (0 != response.getCode()) { + model.addAttribute("fileType", suffix); + model.addAttribute("msg", response.getMsg()); + return "fileNotSupported"; + } else { + model.addAttribute("pdfUrl", fileUtils.getRelativePath(response.getContent())); + } + } else { + model.addAttribute("pdfUrl", url); + } } return "pdf"; } diff --git a/jodconverter-web/src/main/java/cn/keking/service/impl/PictureFilePreviewImpl.java b/jodconverter-web/src/main/java/cn/keking/service/impl/PictureFilePreviewImpl.java index 56ee1f96..f7ad5a11 100644 --- a/jodconverter-web/src/main/java/cn/keking/service/impl/PictureFilePreviewImpl.java +++ b/jodconverter-web/src/main/java/cn/keking/service/impl/PictureFilePreviewImpl.java @@ -1,7 +1,10 @@ package cn.keking.service.impl; +import cn.keking.config.ConfigConstants; import cn.keking.model.FileAttribute; +import cn.keking.model.ReturnResponse; import cn.keking.service.FilePreview; +import cn.keking.utils.DownloadUtils; import cn.keking.utils.FileUtils; import com.google.common.collect.Lists; import org.springframework.beans.factory.annotation.Autowired; @@ -21,18 +24,35 @@ public class PictureFilePreviewImpl implements FilePreview { @Autowired FileUtils fileUtils; + @Autowired + DownloadUtils downloadUtils; + @Override public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) { String fileKey = (String) RequestContextHolder.currentRequestAttributes().getAttribute("fileKey",0); List imgUrls = Lists.newArrayList(url); - try{ + try { imgUrls.clear(); imgUrls.addAll(fileUtils.getImgCache(fileKey)); - }catch (Exception e){ + } catch (Exception e){ imgUrls = Lists.newArrayList(url); } - model.addAttribute("imgurls", imgUrls); - model.addAttribute("currentUrl",url); + // 不是http开头,浏览器不能直接访问,需下载到本地 + if (url != null && !url.toLowerCase().startsWith("http")) { + ReturnResponse response = downloadUtils.downLoad(fileAttribute, null); + if (0 != response.getCode()) { + model.addAttribute("fileType", fileAttribute.getSuffix()); + model.addAttribute("msg", response.getMsg()); + return "fileNotSupported"; + } else { + String file = fileUtils.getRelativePath(response.getContent()); + model.addAttribute("imgurls", Lists.newArrayList(file)); + model.addAttribute("currentUrl", file); + } + } else { + model.addAttribute("imgurls", imgUrls); + model.addAttribute("currentUrl", url); + } return "picture"; } } diff --git a/jodconverter-web/src/main/resources/web/picture.ftl b/jodconverter-web/src/main/resources/web/picture.ftl index 29912e51..b2e7cef8 100644 --- a/jodconverter-web/src/main/resources/web/picture.ftl +++ b/jodconverter-web/src/main/resources/web/picture.ftl @@ -24,6 +24,11 @@