用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 关于#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系统的像差计算