JSP读取BLOB对象写文件出错(在线等)
我要用JSP实现文件上传下载,先将文件读到数据库中,然后下载时写到磁盘,我在将文写入数据库Blob时字节数是正确的,下载时从数据库读出来的字节数也是正确,但在outputstream.write()字节数发生变化,总是多几个字节,导致文件错误打不开,我的代码如下:
<%@ page contentType="text/html; charset=GBK"%>
<%@ page import="java.net.*,java.io.*"%>
<%@ page import="com.dmysoft.model.OavstarGwfj"%>
<jsp:useBean id="oavstarJB" scope="page" class="com.dmysoft.web.jb.OavstarJB"/>
<%
oavstarJB.initialize(request);
try
{
response.setContentType("application/x-download");//设置为下载application/x-download
String filedisplay = request.getParameter("fileName");//下载文件时显示的文件保存名称
filedisplay = URLEncoder.encode(filedisplay.toString(),"UTF-8"); //将文件名转成中文件
response.setHeader("Content-Disposition", "attachment;"
+ " filename=" + filedisplay);
System.out.println(filedisplay);
String tablename = request.getParameter("tablename");
//filedisplay = new String(filedisplay.getBytes("ISO-8859-1"),"gb2312");
String id = request.getParameter("id");
Object object = oavstarJB.getTableBlob(tablename,Integer.parseInt(id));//取得对象
System.out.println(((OavstarGwfj)object).getBody());
byte[] ab = ((OavstarGwfj)object).getBody();//OavstarGwfj对象的Body属性在数据库中是Blob
OutputStream op = response.getOutputStream();
System.out.println("文件字节数====="+ab.length);//这里是正确的
op.write(ab);
op.flush();
op.close();
}
catch(Exception e)
{
e.printStackTrace();
}
%>