kkFileView 使用

KKFileView是一个基于Spring-Boot开发的开源文件预览服务,支持多种办公文档、文本、图片和压缩包的在线预览。通过Docker快速部署,提供REST接口实现跨平台、跨语言的文件预览功能。用户可以方便地进行二次开发,添加更多类型的文件预览支持。
摘要由CSDN通过智能技术生成

开源免费好用,在线预览项目解决方案

项目特性

  1. 支持 office, pdf, cad 等办公文档
  2. 支持 txt, xml(渲染), md(渲染), java, php, py, js, css 等所有纯文本
  3. 支持 zip, rar, jar, tar, gzip 等压缩包
  4. 支持 jpg, jpeg, png, gif, tif, tiff 等图片预览(翻转,缩放,镜像)
  5. 使用 spring-boot 开发,预览服务搭建部署非常简便
  6. rest 接口提供服务,跨语言、跨平台特性(java,php,python,go,php,....)都支持,应用接入简单方便
  7. 抽象预览服务接口,方便二次开发,非常方便添加其他类型文件预览支持
  8. 最最重要 Apache 协议开源,代码 pull 下来想干嘛就干嘛

先是直接拉取镜像docker部署,快捷方便

Docker容器环境环境运行

  1. 拉取镜像
docker pull keking/kkfileview
  1. 运行
docker run -it -p 8012:8012 keking/kkfileview
  1. 浏览器访问容器8012端口(http://xxx.xxx.xxx.xxx:8012 )即可看到项目演示用首页

 项目接入使用

当您的项目内需要预览文件时,只需要调用浏览器打开本项目的预览接口,并传入须要预览文件的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();

    // .....
   }

回去下载远程文件保存到本地,配置文件里配置文件存储地方,在想这里是否会有文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值