文件在线查看

参考网址

https://blog.csdn.net/qq_42944520/article/details/90607328

https://www.cnblogs.com/liran123/p/9846349.html

https://blog.csdn.net/qingtian_1993/article/details/79901843

一、引入资源包

        <!-- 文件在线查看 -->
        <!--jodconverter 核心包 -->
        <!-- https://mvnrepository.com/artifact/org.jodconverter/jodconverter-core -->
        <dependency>
            <groupId>org.jodconverter</groupId>
            <artifactId>jodconverter-core</artifactId>
            <version>4.2.2</version>
        </dependency>
        <!--springboot支持包,里面包括了自动配置类 -->
        <!-- https://mvnrepository.com/artifact/org.jodconverter/jodconverter-spring-boot-starter -->
        <dependency>
            <groupId>org.jodconverter</groupId>
            <artifactId>jodconverter-spring-boot-starter</artifactId>
            <version>4.2.2</version>
        </dependency>
        <!--jodconverter 本地支持包 -->
        <!-- https://mvnrepository.com/artifact/org.jodconverter/jodconverter-local -->
        <dependency>
            <groupId>org.jodconverter</groupId>
            <artifactId>jodconverter-local</artifactId>
            <version>4.2.2</version>
        </dependency>
        <!--openoffice 依赖jar包 -->
        <dependency>
            <groupId>com.artofsolving</groupId>
            <artifactId>jodconverter</artifactId>
            <version>2.2.1</version>
        </dependency> 

二、安装OpenOffice4.1.7

http://www.openoffice.org/download/index.html
至于安装方法(直接下一步直到安装成功即可)

三、编写controller

package com.donglian.file.wdgl.controller;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.IOUtils;
import org.jodconverter.DocumentConverter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.donglian.util.FtpUtils;
import com.donglian.util.IDUtil;
import com.donglian.util.ResultWarp;
import com.donglian.util.StringUtil;
import com.donglian.util.UseridUtil;

/**
 * 
 * @ClassName:  FileCotroller   
 * @Description:(文件管理)   
 * @author: fkx
 * @date:   2019年10月23日 下午4:14:56
 */
@RestController
@RequestMapping("web/file/")
public class FileCotroller{
    @Autowired
    private FileService fileService;
    @Autowired
    private UseridUtil useridUtil;
    @Autowired
    private FileMapper fileMapper;
    // 第一步:转换器直接注入
    @Autowired
    private DocumentConverter converter;
    
    /**
     * 文件在线查看静态
     * @param fileid
     * @return
     */
    @RequestMapping(value = "lookFile" ,method = RequestMethod.GET)
    public ResultWarp lookFile(HttpServletRequest request, HttpServletResponse response) {
        try {
            File file = new File("D:/test/Linx命令.txt");//需要转换的文件
            File newFile = new File("D:/test");//转换之后文件生成的地址
            if (!newFile.exists()) {
                newFile.mkdirs();
            }
            //文件转化
            converter.convert(file).to(new File("D:/test/common.pdf")).execute();
            //使用response,将pdf文件以流的方式发送的前端
            ServletOutputStream outputStream = response.getOutputStream();
            InputStream in = new FileInputStream(new File("D:/test/common.pdf"));// 读取文件
            // copy文件
            int i = IOUtils.copy(in, outputStream);
            System.out.println(i);
            in.close();
            outputStream.close();
            return new ResultWarp(ResultWarp.SUCCESS,"ok");
        } catch (Exception e) {
            e.printStackTrace();
            return new ResultWarp(ResultWarp.FAILED, "服务异常");
        }
    }
    /**
     * 文件在线查看
     * @param fileid
     * @return
     */
    @RequestMapping(value = "lookFile1" ,method = RequestMethod.GET)
    public ResultWarp lookFile1(HttpServletRequest request, HttpServletResponse response, String fileid) {
        try {
            TFileManagerEntity file=fileService.viewFile(fileid);
            //文件不属于docx/doc/xlsx/xls/pptx/ppt/txt/jpg/jpeg/png/gif/pdf类型不能在线查看
            List<String> list = Arrays.asList("docx","doc","xlsx","xls","pptx","ppt","txt","jpg","jpeg","png","gif","pdf");
            if(list.contains(file.getFilesuffix().toLowerCase())) {
                InputStream ins=FtpUtils.getFileOnlineLook(file.getUrl(), fileid+"."+file.getFilesuffix());
                File newFile = new File("/testPdf");//转换之后文件生成的地址
                if (!newFile.exists()) {
                    newFile.mkdirs();
                }
                //写出文件
                FileOutputStream out = new FileOutputStream("/testPdf/"+fileid+"."+file.getFilesuffix());
                int data;
                while((data = ins.read()) != -1) {
                    out.write(data);
                }
                File fileStart=new File("/testPdf/"+fileid+"."+file.getFilesuffix());
                //判断如果文件是pdf不需要转化
                if(!file.getFilesuffix().toLowerCase().equals("pdf")) {
                    //文件转化
                    converter.convert(fileStart).to(new File("/testPdf/"+fileid+".pdf")).execute();
                    //fileStart.delete();//转化完成后删除转化之前的文件
                }
                //使用response,将pdf文件以流的方式发送的前端
                ServletOutputStream outputStream = response.getOutputStream();
                File fileEnd=new File("/testPdf/"+fileid+".pdf");
                InputStream in = new FileInputStream(fileEnd);// 读取文件
                // copy文件
                IOUtils.copy(in, outputStream);
                ins.close();
                out.close();
                in.close();
                outputStream.close();
                fileStart.delete();//转化完成后删除转化之前的文件
                fileEnd.delete();//输出到页面后删除pdf文件
                return new ResultWarp(ResultWarp.SUCCESS,"ok");
            }
            return new ResultWarp(ResultWarp.FAILED,file.getFilesuffix()+":该文件类型目前不支持在线查看");
        } catch (Exception e) {
          e.printStackTrace();
            return new ResultWarp(ResultWarp.FAILED, "服务异常");
        }
    }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值