JAVA实现下载的前后端代码
程序员文章站
2024-03-20 14:38:16
...
之前看了很多别人的博客,总是只有一半,基本都只有后端,现在发一个自己实践能用的。
前端代码如下:
function download(url) {
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.responseType = "blob"; // 返回类型blob
// 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑
xhr.onload = function () {
// 请完成
if (this.status === 200) {
// 返回200
var blob = this.response;
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onload = function (e) {
// 转换完成,创建一个a标签用于下载
var a = document.createElement('a');
// 下载的文件名
a.download = '321200_20190521_0001_BILL.RES';
a.href = e.target.result;
$("body").append(a); // 修复firefox中无法触发click
a.click();
$(a).remove();
}
}
};
xhr.send()
}
这里的download(url)方法就是向后端请求文件流。url就是后端获取文件流的接口。其中我请求时还传递了文件路径(path)以及文件名(fileName)两个参数。
后端代码:
@RequestMapping(value = "/download",produces = { "application/json" },method = RequestMethod.POST)
@ResponseBody
public void download(String path,String fileName, HttpServletResponse response) throws IOException {
response.setCharacterEncoding("utf-8");
response.setHeader("Pragma", "No-Cache");
response.setHeader("Cache-Control", "No-Cache");
response.setDateHeader("Expires", 0);
response.setContentType("application/msexcel; charset=UTF-8");
response.setHeader("Content-disposition","attachment; filename=" + URLEncoder.encode(fileName, "GBK"));// 设定输出文件头
ServletOutputStream out = null;
FileInputStream in = null; // 读入文件
in = new FileInputStream(path);
out = response.getOutputStream();
out.flush();
int aRead = 0;
while ((aRead = in.read()) != -1 & in != null) {
out.write(aRead);
}
out.flush();
in.close();
out.close();
}
这样前端接收到后端的返回后就会开始下载了,还可以在谷歌浏览器中开启选择下载位置。
推荐阅读
-
JAVA实现下载的前后端代码
-
axios实现文件下载,附前后端代码
-
二分查找、二分边界查找算法的模板代码总结-Java实现
-
二分查找、二分边界查找算法的模板代码总结 - Java实现
-
java代码---实现随机产生1000个随机数,并10个一行的输出
-
java单例模式 的饿汉式和懒汉式代码实现
-
基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.9.0版) 博客分类: TableGo java数据库自动生成代码零代码编程软件框架
-
基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.0.0版) 博客分类: TableGo java数据库自动生成代码框架模板
-
基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.6.6版) 博客分类: TableGo java数据库自动生成代码框架模板
-
基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.9.0版) 博客分类: TableGo java数据库自动生成代码零代码编程软件框架