servlet中zip文件下载问题

wujinbao 2003-07-17 03:23:45
servlet中生成一zip流并下载到客户端,为何前两次下载的zip文件均不能打开直到第三个zip文件才能正确打开?
...全文
264 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
conning333 2003-07-17
  • 打赏
  • 举报
回复
为什么第三次就行,我很奇怪,不懂
bruni 2003-07-17
  • 打赏
  • 举报
回复
res.setContentType("bin");
amortal 2003-07-17
  • 打赏
  • 举报
回复
zip文件,直接给个联接就可以下载了呀!何必那么麻烦呢?
打开问题的话,就把method=get
wujinbao 2003-07-17
  • 打赏
  • 举报
回复
原代码如下:
res.setHeader("Content-Disposition","attachment;filename=zipfile.zip");
res.setHeader("Connection","close");
res.setContentType("application/octet-stream");
ServletOutputStream out=response.getOutputStream();;
out = res.getOutputStream();
// 创建ZIP文件输出流
System.out.println("create zip stream");
ZipOutputStream zip = new ZipOutputStream(out);
String oln; byte [] byt;
while(rs.next())
{
String val = rs.getString("uid");
fname = val.substring(val.length() - 8)+".R12");
zip.putNextEntry(new ZipEntry(fname));
oln = "kjasdfijsdifjsdfj \r\n" ;
byt = oln.getBytes();
zip.write(byt, 0, byt.length);
zip.closeEntry();
}

zip.finish();
zip.close();
snowboy2003 2003-07-17
  • 打赏
  • 举报
回复
看这里,试一下这个:

ServletOutputStream out = response.getOutputStream();

request.setCharacterEncoding("GB2312");

String file="d:\\down\\"+request.getParameter("filename");

int BUFFER = 2048;

byte data[] = new byte[BUFFER];

BufferedInputStream origin = null;

FileInputStream fis = new FileInputStream(fileName);

int numRead=0;

int size=0;

origin = new BufferedInputStream(fis, BUFFER);

response.setContentType( "application/OCTET-STREAM" );

response.setHeader("Content-Disposition","attachment; filename="+request.getParameter("filename")+";");

while (numRead != -1) {

numRead= origin.read(data, 0, BUFFER);
out.write(data, 0, numRead);
size+=numRead;
}

origin.close();
testjava 2003-07-17
  • 打赏
  • 举报
回复
没碰到过这么奇怪的问题?
wolfsquare 2003-07-17
  • 打赏
  • 举报
回复
没有出现过这种问题,也许是服务端相应太慢或者断开太快?
楼主可否贴代码看看?

81,094

社区成员

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

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