在使用下面代码设置一个附件的响应头进行下载,但是请求发送后没有弹出下载,F12查看相应数据发现对应的Content-Disposition属性没有设置为附件。
resp.setHeader("Content-Disposition", "attachment; filename=" + downloadFileName);
查了相关的信息后发现是因为当下载的内容过大时如果使用
IOUtils.copy(in, response.getOutputStream());
此代码进行文件的输出,需要将此代码放在setHeader后,否则就会导致无法下载的问题。
修改后的代码:
resp.setHeader("Content-Disposition", "attachment; filename=" + downloadFileName);
//读取文件并发送给客户端
ServletOutputStream os = resp.getOutputStream();
//用第三方的工具类进行输出操作
IOUtils.copy(is , os);
修改后可以弹出下载信息