下载文件时,响应Response设置,浏览器弹出下载框

您所在的位置:网站首页 请允许弹框下载 下载文件时,响应Response设置,浏览器弹出下载框

下载文件时,响应Response设置,浏览器弹出下载框

2024-07-15 03:10| 来源: 网络整理| 查看: 265

在你潇洒的写下InputStream转到response的时候,需要先设置下Response,否则浏览器并不会弹出下载框

预处理

"Content-Type", "application/octet-stream"是内容类型,告诉浏览器这个是什么,可以参照对照表 https://www.runoob.com/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(); } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3