为什么下载tiff在Firefox中不起作用?

时间:2015-11-04 16:53:52

标签: angularjs

在我的项目中,我使用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似乎仍然没有任何本机方式来保存文件。如果有人证明我错了,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

 hiddenLink.click();

也许应该是:

$(hiddenLink).click(); 

或与其他相同:

$(hiddenLink).trigger('click');

假设您还需要添加事件处理程序......