yuanhui69 2010-06-10 15:21
浏览 234
已采纳

jsp中response实现下载的问题

我在JSP页面中写了一段java代码用于读取数据库数据并将数据写入dbf文件中,然后把dbf文件打包并提供下载的功能,但是该代码执行的时候在IE8中可以实现下载,但是在360浏览器中弹出下载框,你点击下载后就永远处于下载状态,文件下不下来...以下是代码片段, 谢谢了...

 

try{ 
JDBField[] field = new JDBField[8];

field[0] = new JDBField("KSH",'C',14,0);
field[1] = new JDBField("XM",'C',64,0);
field[2] = new JDBField("KSZTMC",'C',32,0);
field[3] = new JDBField("YXMC",'C',64,0);
field[4] = new JDBField("PCMC",'C',16,0);
field[5] = new JDBField("KLMC",'C',16,0);
field[6] = new JDBField("ZYMC",'C',64,0);
field[7] = new JDBField("TDYYMC",'C',253,0);


DbfOutputStream dbfbytes= new DbfOutputStream();
response.reset();
response.setContentType("application/octet-stream;charset=gb18030");
String s = "attachment; filename=zyk_"+user.getName()+"_"+zzdm+".zip";
response.setHeader("Content-Disposition", s);

DBFWriter dbf = new DBFWriter(dbfbytes,field);

ZResultSet rst = (ZResultSet)rm.getData();
Vector<Vector> datas = rst.getDatas();
for (int i=0;i<datas.size();i++){
Vector row = datas.get(i);
Object[] rows = {row.get(0).toString(),row.get(1),row.get(2),row.get(3),row.get(4),row.get(5),row.get(6),row.get(7)};
dbf.addRecord(rows);
}
dbf.close();
dbfbytes.getBytes()[4] = dbfbytes.int2Bytes(datas.size())[3];
dbfbytes.getBytes()[5] = dbfbytes.int2Bytes(datas.size())[2];
dbfbytes.getBytes()[6] = dbfbytes.int2Bytes(datas.size())[1];
dbfbytes.getBytes()[7] = dbfbytes.int2Bytes(datas.size())[0];
  
  

java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream();
java.util.zip.ZipOutputStream zip= new java.util.zip.ZipOutputStream(bos);
java.util.zip.ZipEntry entry = new java.util.zip.ZipEntry(user.getName()+"_"+zzdm+".dbf");
entry.setSize(dbf.getSize());
zip.putNextEntry(entry);
zip.write(dbfbytes.getBytes(),0,dbf.getSize());
zip.closeEntry();
zip.close();
byte[] buf = bos.toByteArray();


response.setHeader("Content-Length", new Integer(buf.length).toString());
response.getOutputStream().write(buf,0,buf.length);
response.getOutputStream().close();

}catch(Exception ex ){
out.println(ex.getMessage());
}
  • 写回答

5条回答 默认 最新

  • myali88 2010-06-10 16:46
    关注

    那应该就是它浏览器本身的问题了。如果还要进一步确认的话,把你下载文件的代码简单化,做两个测试:
    1.还是在JSP内,只从读取一个文件,然后写到响应中,看下载情况。
    2.从servlet或struts的action下载文件,看360是否可以。

    如果这样它也不行,那就是它浏览器的问题了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 maccms影视模板 制作影视网站失败 求
  • ¥15 stm32按键设置闹钟数进退位不正常
  • ¥15 三电平逆变器中点电位平衡问题
  • ¥20 这怎么写啊 java课设
  • ¥15 用C语言完成一个复杂的游戏
  • ¥15 如何批量更改很多个文件夹里的文件名中包含文件夹名?
  • ¥50 MTK手机模拟HID鼠标出现卡顿
  • ¥20 求下下面这个数据结构代码
  • ¥20 前端 二进制文件流图片转化异常
  • ¥15 github上的这个C语言项目如何跑起来