后端接口返回文件流,前端实现文件下载
后端接口返回文件流,前端实现文件下载
本文将介绍如何使用后端接口返回文件流,并在前端使用 JavaScript 代码实现文件下载功能。
后端接口代码
后端接口返回文件流,可以使用类似于以下的代码:
@RequestMapping(value = "/download", method = RequestMethod.GET)
public void download(HttpServletResponse response) {
try {
InputStream inputStream = new FileInputStream(file);
IOUtils.copy(inputStream, response.getOutputStream());
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename='" + fileName + "'");
response.flushBuffer();
} catch (IOException e) {
e.printStackTrace();
}
}
其中,file是要下载的文件,fileName是文件名。
前端代码
前端通过 AJAX 请求接口,获取文件流,可以使用以下代码:
function download() {
$.ajax({
url: "/download",
type: "get",
dataType: "blob",
success: function (data) {
var url = window.URL.createObjectURL(data);
var a = document.createElement("a");
a.href = url;
a.download = "file.xlsx";
a.click();
}
});
}
其中,blob表示返回的数据类型是二进制流,window.URL.createObjectURL(data)将二进制流转换为文件 URL,然后创建一个虚拟的 a 标签,将 URL 赋给它的 href 属性,设置下载的文件名,并触发点击事件,即可在浏览器中打开或下载文件。
原文地址: https://www.cveoy.top/t/topic/mwkr 著作权归作者所有。请勿转载和采集!