在我的项目中,我使用AngularJS,因此创建了下载文件的指令。它包含以下内容:
scope.$on('downloaded', function(event, data) {
var hiddenLink = document.createElement('a');
$(hiddenLink).attr({
href: 'data:application/tiff;base64,' + data.Attachment,
download: data.AttachmentFileName
});
if (isIEorFirefox) {
$(hiddenLink).click(function(event){
event.preventDefault();
var byteString = atob(data.Attachment);
var buffer = new ArrayBuffer(byteString.length);
var intArray = new Uint8Array(buffer);
for (var i = 0; i < byteString.length; i++) {
intArray[i] = byteString.charCodeAt(i);
}
var blob = new Blob([buffer],{type:'image/tiff'});
window.navigator.msSaveOrOpenBlob(blob, data.AttachmentFileName);
});
$(hiddenLink).trigger('click');
} else {
hiddenLink.click();
}
});
以前有一个问题 - 在IE中下载根本就没有开始 - 但是现在你已经被淘汰了。虽然还存在另一个问题 - 目前此代码并未在Firefox中开始下载。只有一个问题 - 为什么?
更新
我更新了初始代码,因为它没有在IE中正确保存文件。现在确实如此。通过网络搜索我仍然找不到在FF中下载文件的方法。此外,根据本文https://hacks.mozilla.org/2012/07/why-no-filesystem-api-in-firefox/,FF似乎仍然没有任何本机方式来保存文件。如果有人证明我错了,我将不胜感激。
答案 0 :(得分:0)
hiddenLink.click();
也许应该是:
$(hiddenLink).click();
或与其他相同:
$(hiddenLink).trigger('click');
假设您还需要添加事件处理程序......