赞
踩
开源免费好用,在线预览项目解决方案
先是直接拉取镜像docker部署,快捷方便
docker pull keking/kkfileview
docker run -it -p 8012:8012 keking/kkfileview
当您的项目内需要预览文件时,只需要调用浏览器打开本项目的预览接口,并传入须要预览文件的url,示例如下:
- var url = 'http://127.0.0.1:8080/file/test.txt'; //要预览文件的访问地址
- window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(base64Encode(url)));
使用是发现一些问题,pull下源码,启动服务
文件下载地址最好是能直接正确下载文件,文件上传后会出现预览按钮。
如果文件很大会需要一定时间处理文件。
- @GetMapping( "/onlinePreview")
- public String onlinePreview(String url, Model model, HttpServletRequest req) {
- String fileUrl;
- try {
- fileUrl = WebUtils.decodeUrl(url);
- } catch (Exception ex) {
- String errorMsg = String.format(BASE64_DECODE_ERROR_MSG, "url");
- return otherFilePreview.notSupportedFile(model, errorMsg);
- }
- FileAttribute fileAttribute = fileHandlerService.getFileAttribute(fileUrl, req);
- model.addAttribute("file", fileAttribute);
- FilePreview filePreview = previewFactory.get(fileAttribute);
- logger.info("预览文件url:{},previewType:{}", fileUrl, fileAttribute.getType());
- return filePreview.filePreviewHandle(fileUrl, model, fileAttribute);
- }
文件预览接口
- @Override
- public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) {
- // 预览Type,参数传了就取参数的,没传取系统默认
- String officePreviewType = fileAttribute.getOfficePreviewType();
- String baseUrl = BaseUrlFilter.getBaseUrl();
- String suffix = fileAttribute.getSuffix();
- String fileName = fileAttribute.getName();
- String filePassword = fileAttribute.getFilePassword();
- String userToken = fileAttribute.getUserToken();
- boolean isHtml = suffix.equalsIgnoreCase("xls") || suffix.equalsIgnoreCase("xlsx") || suffix.equalsIgnoreCase("csv");
- String pdfName = fileName.substring(0, fileName.lastIndexOf(".") + 1) + (isHtml ? "html" : "pdf");
- String cacheFileName = userToken == null ? pdfName : userToken + "_" + pdfName;
- String outFilePath = FILE_DIR + cacheFileName;
- if (!fileHandlerService.listConvertedFiles().containsKey(pdfName) || !ConfigConstants.isCacheEnabled()) {
- // 下载远程文件到本地,如果文件在本地已存在不会重复下载
- ReturnResponse<String> response = DownloadUtils.downLoad(fileAttribute, fileName);
- if (response.isFailure()) {
- return otherFilePreview.notSupportedFile(model, fileAttribute, response.getMsg());
- }
- String filePath = response.getContent();
-
- // .....
- }

回去下载远程文件保存到本地,配置文件里配置文件存储地方,在想这里是否会有文件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。