ycxjeremy
ycxjeremy
采纳率31.8%
2017-03-29 07:47 阅读 2.6k

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 Welcome_Word 2017-03-29 08:11

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

    点赞 评论 复制链接分享

相关推荐