从数据库中取出word文档的二进制数据怎样显示在jsp页面?

小蠢咩咩咩 发布于 2016/06/29 17:12
阅读 753
收藏 1
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="java.io.*"%>
<%@page import="java.util.*"%>
<%@page import="com.horizon.db.Access"%>
<%
    String path=request.getContextPath();
    System.out.println(path);
    String workid=request.getParameter("workid");   
    String sql = "select * from document_file where recordid='"+workid+"'";
    System.out.println("sql====="+sql);
 
    List listaid = Access.getMultiList(sql, null);
    System.out.println(listaid.size());
    if(listaid.size()>0){
        String fileid = String.valueOf(((List) listaid.get(0)).get(0));
        System.out.println(fileid);
        byte[] byteblob = Access.getBlobContentBytes("DOCUMENT_FILE","FILEBODY","where recordid  ='"+workid+"'","system");       
         
        response.reset();
        response.setHeader("Content-Disposition", "attachement;filename=fujian.doc;");
        //String s=new String(byteblob.getBytes("IS0-8859-1","GBK"));
//        response.setContentType("application/msword;charset=GBK");   
        response.setContentType("application/x-msdownload");
        //response.setContentType("text/html;charset=utf-8");
        OutputStream output=response.getOutputStream(); 
        output.flush(); 
         if(byteblob!=null){
                InputStream  in = new ByteArrayInputStream(byteblob); 
                byte[] buf=new byte[4096];
                int len = 0;                
                while ((len = in.read(buf)) > 0) {
                    output.write(buf, 0, len);                 
                }   
                in.close();
                output.flush();
                output.close();
                output=null;  
                response.flushBuffer();  
                out.clear();  
                out = pageContext.pushBody(); 
             }
    }else{
    %>
    <div>&nbsp;</div>
    <div align="center" style="color:red">相关的正文不存在!</div>

<% }%>

怎么讲获取的word数据显示在jsp页面上,不需要下载


加载中
0
小蠢咩咩咩
小蠢咩咩咩
有大神吗?求帮忙啊
0
sxgkwei
sxgkwei
不行,浏览器并不识别文件类型的东西来显示的。说白了,浏览器只认识html,js,css,其它的东西,你要显示,和客户端是否安装相关的控件或插件有关。
小蠢咩咩咩
小蠢咩咩咩
那怎么转换成可以在jsp页面显示呢?
0
小蠢咩咩咩
小蠢咩咩咩
有大神帮忙解决吗?
0
chendc
chendc

可以在存入的时候,记录下缩进 换行之类的。  然后存入到库里。 读出来的时候,在用html 换行  空格 啥的。


小蠢咩咩咩
小蠢咩咩咩
这个已经是用word格式存入数据库了,现在取出来想在页面直接显示而不是下载,知道该如何去做吗?
0
魔力猫
魔力猫

如果浏览器是微软的产品,客户端又安装了Office套件,那么是可以直接处理的。也就是说,必须客户端提供插件才可以。


0
Im柏杨
Im柏杨
从数据库取出来,生成word,然后利用jacob,或者poi转成一个静态html页面。然后就可以展示了。总是非常麻烦,可能也不能实现100%一样的效果。
小蠢咩咩咩
小蠢咩咩咩
我上面代码已经将二进制数据取出来了
小蠢咩咩咩
小蠢咩咩咩
有没有将二进制格式直接转成HTML格式的方法显示呢?
0
fly2xiang
fly2xiang
QQ邮箱的附件预览用的是这个:http://dcs.yozosoft.com/index.html
0
银杏果果
银杏果果
用poi转html吧,网上搜索一大堆
银杏果果
银杏果果
回复 @小蠢咩咩咩 : 百度上搜索“poi word转html”这个一大堆资料的,只是里面是用的InputStream文件流,你只要把二进制byte数据转成InputStream就跟操作文件流一样了
银杏果果
银杏果果
回复 @小蠢咩咩咩 : 如果存到数据库的是word二进制文件流,那么用poi组件应该是可以的
小蠢咩咩咩
小蠢咩咩咩
能直接将二进制数据转成HTML?
返回顶部
顶部