admin管理员组文章数量:1596343
在你潇洒的写下InputStream转到response的时候,需要先设置下Response,否则浏览器并不会弹出下载框
预处理
"Content-Type", "application/octet-stream"
是内容类型,告诉浏览器这个是什么,可以参照对照表
https://www.runoob/http/http-content-type.html
public static void preInitResponseForFileStream(HttpServletResponse response, String name) {
response.reset();
//避免中文乱码
response.setHeader("Content-Disposition", "attachment;filename=" + new String(name.getBytes(), StandardCharsets.ISO_8859_1));
response.setHeader("Connection", "close");
//设置传输的类型
response.setHeader("Content-Type", "application/octet-stream");
response.setHeader("Content-Transfer-Encoding", "chunked");
response.setHeader("Access-Control-Allow-Origin", "*");
response.setContentType("application/OCTET-STREAM");
}
下载
这里也顺便把下载贴上来吧,也可以使用其他流的处理方式,比如java7的Files
工具类等,或者apache的IOUtils
public static void download(String fileUrl, HttpServletResponse response) {
try (BufferedInputStream in = new BufferedInputStream(new URL(fileUrl).openStream());
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream())) {
byte dataBuffer[] = new byte[1024];
int bytesRead;
while ((bytesRead = in.read(dataBuffer, 0, 1024)) != -1) {
out.write(dataBuffer, 0, bytesRead);
}
out.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
版权声明:本文标题:下载文件时,响应Response设置,浏览器弹出下载框 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1726114464a1055954.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论