ycxjeremy 2017-03-29 07:47 采纳率: 100%
浏览 2715

SSM框架实现多文件下载

用SSM框架实现多个文件下载,下载方式是从数据库取出文件的二进制流进行下载,根据一个id下载这个id下的文件,因为一个Id下可能会有多个文件,所以点击时就需要下载多次,以下是我写的下载代码,想要通过循环下载,但是不能下载两个,只能下载第一个文件,但是下面的输出语句又输出了两次,想问问什么原因。。。
for (int i = 0; i < 2; i++) {
try {
bytes = 二进制流;//二进制流
fileName = 文件名称;
fileLength = bytes.length;//文件长度
res.setContentType("application/octet-stream");
res.setHeader("Content-disposition", "attachment; filename="
+ new String(fileName.getBytes("utf-8"), "ISO8859-1"));
res.setHeader("Content-Length", String.valueOf(fileLength));
bos = new BufferedOutputStream(res.getOutputStream());
bos.write(bytes, 0, fileLength);
System.out.println("======第"+(i+1)+"个文件下载======"+fileName);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bos.flush();
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

  • 写回答

1条回答 默认 最新

  • Welcome_Word 2017-03-29 08:11
    关注

    以下发言全是猜的,仅供参考
    感觉应该是你bos.flush和bos.close后浏览器认为响应已经完成,所以你虽然循环两次但是第二次是无效的,总之感觉应该是bos.flush和bos.close那里的问题,如果你的大前提没错的话建议你循环两次后再flush和close
    以上思路全是猜的

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算