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条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况