震惊!!! 新鲜出炉的文件下载功能,在chrome 中惨遭滑铁卢
本文只针对 在chrome中滑铁卢 但在其他浏览器上攻无不克
并且新鲜出炉的javaWEB文件下载功能
出现问题的地方在这里:
// 错误代码
response.setContentType("application/xlsx");
// 正确代码
response.setContentType("application/xlsx;");
// 一个 ; 号之差
正确代码是这样的:
// 拿到文件对象后的校验 下载
if (!file.exists()) {
ResponseUtils.renderJson(response, JSON.toJSONString(Result.getMsgError("服务器上没有你需要的模板")));
}
// 开始设置响应头,准备传输文件
// 设置响应内容大小
response.setHeader("Content-Length", String.valueOf(file.length()));
// 设置响应类型, 此处是xlsx
response.setContentType("application/xlsx;");
// 设置 Content-Disposition 为 attachment 如此浏览器会激活文件下载框
// filename 则是 下载的文件的默认名称
response.addHeader("Content-Disposition",
"attachment; filename=" + UPLOAD_TEMPLATE_FILE_NAME);
byte[] buffer = new byte[1024];
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(new FileInputStream(file));
OutputStream os = response.getOutputStream();
int i ;
while ((i=bis.read(buffer)) != -1) {
os.write(buffer, 0, i);
}
} catch (IOException e) {
log.warn(" upload file is error .the error msg is :[" + e.getMessage() + "]");
result = Result.getDefaultError();
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
}
}
}