所以,就是这样。
我正在使用Spring MVC控制器从服务bean获取字节[]的文件。该服务只是从磁盘读取文件。
到目前为止没问题,我只需要将bytes []写入ResponseBody并手动设置响应内容类型。 (这里没问题,或者我错过了什么)。
我的疑问来自我的javascript代码。我正在使用dojo 1.7.2。 快速研究似乎我可以使用dojo.io.IFrame来实现“异步”下载行为。
使用dojo还有另一种方法吗?或者IFrame是否可行?
此外,对此主题的任何建议都将不胜感激。
答案 0 :(得分:0)
function downloadExcel(urlParm){
var xhr = new XMLHttpRequest();
xhr.open('POST', urlParm);
xhr.responseType = 'blob';
xhr.send();
xhr.onreadystatechange = function(){
if (xhr.readyState == 4){
// $.unblockUI();
if(xhr.status == 200) {
var blob = new Blob([xhr.response], { type: 'application/vnd.ms-excel' });
if (navigator.msSaveOrOpenBlob)
navigator.msSaveOrOpenBlob(blob, 'excelFile1.xls');
else {
var link = document.createElement('a');
var URL = window.URL || window.webkitURL;
var downloadUrl = URL.createObjectURL(blob);
link.href = downloadUrl;
link.style = "display: none";
link.download = 'excelFile1.xls';
document.body.appendChild(link);
link.click();
setTimeout(function(){
document.body.removeChild(link);
window.URL.revokeObjectURL(downloadUrl);
}, 100);
}
}
else
alert("HTTP return status: " + xhr.status);
}
}
}