用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();
}
}
}
SSM框架实现多文件下载
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- Welcome_Word 2017-03-29 08:11关注
以下发言全是猜的,仅供参考
感觉应该是你bos.flush和bos.close后浏览器认为响应已经完成,所以你虽然循环两次但是第二次是无效的,总之感觉应该是bos.flush和bos.close那里的问题,如果你的大前提没错的话建议你循环两次后再flush和close
以上思路全是猜的解决 无用评论 打赏 举报
悬赏问题
- ¥15 chaquopy python 安卓
- ¥50 Kubernetes&Fission&Eleasticsearch
- ¥15 有没有帮写代码做实验仿真的
- ¥15 報錯:Person is not mapped,如何解決?
- ¥30 vmware exsi重置后登不上
- ¥15 易盾点选的cb参数怎么解啊
- ¥15 MATLAB运行显示错误,如何解决?
- ¥15 c++头文件不能识别CDialog
- ¥15 Excel发现不可读取的内容
- ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题