使用IO流下载文件,浏览器不下载的问题。

使用io流实现下载文件,运行时打断点发现产生了流,但是浏览器并没有下载文件。
经查询,发现若干原因。
1.设置response的头文件
response.addHeader(" Content-disposition", "attachment; filename=" +fileName);
其中 Content-disposition设置表示浏览器自动下载。
但并未解决我的问题。
后来在网上查询有说法是使用io流下载文件,不能通过ajax请求,要使用http请求
,我按照此思路修改代码,最终功能实现。修改后的请求代码如下:
function downloadFile(fileName) {
var fileName = encodeURI(encodeURI(fileName));
var url = "${ctx}/rpt-web/frame/topicShow/downloadFile?fileName="+fileName;
$('body').append($('<iframe id="download"/>'));
$("#download").attr('src',url);
}

其中红色部分代码是为了防止js传到后台的参数出现乱码,对应的在后台代码中要加上下面一行代码:
fileName =URIDecoder.decode(fileName,"utf-8");
至于io流下载,到底能不能使用ajax请求,还有待验证。

猜你喜欢

转载自blog.csdn.net/liushun1223/article/details/79861011