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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵