有一个需求,通过webservice,我获得了一个大的字节流,然后通过servlet,我把它以pdf格式显示到了jsp上,现在是这样的,因为要显示这个pdf一般需要花费20秒左右,字节流的大小也能获得,我一开始只是简单显示了一行文字,就是提示后台正在运行,请稍候,然后运行完毕后,直接替换这个页面即可,现在用户说这个不行,需要让我们知道目前这个文件一共多大,目前下载了多大……,一共多大,倒好说,直接给他们看这个流有多大字节就行,关键是,如何让他们知道目前已经下载了多少字节的数据,这是一个大问题……请各位高人指点一下,谢谢!
protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException
{
String startCode4=arg0.getParameter("originCode4");
String endCode4=arg0.getParameter("destCode4");
String enrouteCode=arg0.getParameter("enrouteCode");
arg1.setContentType("application/pdf");
arg1.setHeader("Content-disposition","inline; filename=foobar.pdf" );
ByteArrayOutputStream baos =Base64.getByteArrayOutputStream(startCode4,endCode4,enrouteCode);
arg1.setContentLength(baos.size());
ServletOutputStream sos=arg1.getOutputStream();
//sos.write(baos.toByteArray(),0,baos.size());
baos.writeTo(sos);
sos.flush();
baos.close();
sos.close();
}
这是我的输出pdf的方法
现有的webservice客户端好象也没有能提供下载的数据量的。或者,文件部分不通过webservice,webservice只给出文件的地址,由一个客户端程序去下载。这样实现起来还简单些。
你那个Base64只是拿到数据后的处理程序,这时数据已经下载下来了。