救命呀!关于从数据库读取Word文档(BLOB)在JSP页面显示

zlgun 2002-08-29 07:23:29
页面输出乱码,但文件写入正确。(运行环境:WebLogic6.1+Jdk1.3.1+WinXP)
<%@ page language="java" import="java.sql.*,java.util.*"%>
<%
String image_id ="2" ;
int imglen=0;
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@89.0.0.224:1521:bi";
//orcl为你的数据库的SID
String user="system";
String password="manager";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select test from tab_test1 where id=2");
if (rs.next())
{
oracle.sql.BLOB m_blob=(oracle.sql.BLOB) rs.getBlob(1);
int length=(int) m_blob.length();
imglen=length;

BufferedInputStream bis=new BufferedInputStream(m_blob.getBinaryStream());
byte[] l_buffer = new byte[1024];
int l_nbytes = 0;

response.setContentType("application/msword");
javax.servlet.ServletOutputStream op = response.getOutputStream();
File newfile=new File("d:/new.doc");
FileOutputStream nn=new FileOutputStream(newfile);
while ((l_nbytes = bis.read(l_buffer)) != -1) {
op.write(l_buffer,0, l_nbytes);
nn.write(l_buffer,0, l_nbytes);
}
op.close();
nn.close();
}

System.out.println("文档长度:"imglen);
rs.close();
stmt.close();
conn.close();
}
catch(Exception e) {
System.out.println(imglen);
System.out.println(e.getMessage());

}
%>

同时控制台提示如下:
文档长度:120832
Connection reset by peer: socket write error
<2002-8-29 下午06时59分25秒> <Error> <HTTP> <Connection failure
java.net.SocketException: ReadFile failed: ??¨??????????????á?
(error 64, fd 2064)
at weblogic.socket.NTSocketMuxer.initiateIO(Native Method)
at weblogic.socket.NTSocketMuxer.read(NTSocketMuxer.java:407)
at weblogic.servlet.internal.MuxableSocketHTTP.requeue(MuxableSocketHTTP
.java:231)
at weblogic.servlet.internal.ServletResponseImpl.send(ServletResponseImp
l.java:977)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:1964)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>
...全文
141 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zlgun 2002-08-30
  • 打赏
  • 举报
回复
楼上的,我用的就是ServletOutputStream
你说的正确地编码是什么意思?(二进制流和编码有什么关系)
还有为什么要用servlet来实现???
littlecong 2002-08-30
  • 打赏
  • 举报
回复
jsp的out是个Writer
建议用OutputStream,或者正确的编码
最好用servlet来实现了
zlgun 2002-08-30
  • 打赏
  • 举报
回复
晕~!改成servlet居然就好了
反编译jsp运行时生成的class文件发现weblogic自动在开头给加了一句
JspWriter jspwriter = pagecontext.getOut();
jspwriter.print("\r\n");

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧