如何使用 dojo 在不冻结浏览器的情况下下载文件
How to download file without freezing the browser using dojo?
就是这样。
我正在使用一个弹簧 MVC 控制器,它从服务字节 Bean 获取以字节 [] 为单位的文件。该服务只是从磁盘读取文件。
到目前为止没问题,我只需要将字节[]写入响应正文并手动设置响应内容类型。(这里没有问题,或者我错过了什么)。
我的疑问来自我的javascript代码。我正在使用道场 1.7.2。做一个快速的研究 似乎我可以使用dojo.io.IFrame来实现"异步"下载行为。
道场有没有其他方法可以做到这一点?还是IFrame是要走的路?
此外,有关此主题的任何建议将不胜感激。
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);
}
}
}
相关文章:
- 如何在未直接触发的情况下停止事件
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- 在不打开聊天屏幕的情况下制作Zopim-ding代理
- 在不阻止默认行为的情况下检测IE10中的缩放
- 如何在不在本地下载的情况下将url中提供的文件(pdf/doc)转换为json/string/base64格式
- 如何使用 dojo 在不冻结浏览器的情况下下载文件
- 如何在不打开文件的情况下下载文件
- 使用xhr.onprogress可以在不耗尽内存的情况下处理大型ajax下载
- 如何在不下载的情况下将谷歌字体加载到chrome打包的应用程序中
- 如何在不打开浏览器的情况下下载pdf文件
- Javascript和FF-addon:如何在不重新下载的情况下将图像保存到本地磁盘
- 如何在不下载和上传数据的情况下复制具有许多记录的 Firebase 子项
- 下载脚本和statcounter在不打开新页面的情况下协同工作
- 在不下载文件的情况下检查下载链接是否正常工作
- 在不下载的情况下打开大尺寸pdf的方法(在javascript上使用open)
- 如何在没有node.js/npm的情况下将Angular 2安装到codeigniter中(手动下载)
- 是否可以在不使用window.stop()的情况下停止图像/资源的下载?
- 在下载文件出错的情况下,管理表单提交上的JSON服务器响应
- 在不下载Javascript中的整个文件的情况下,检查远程JSON是否比本地JSON更新