AngularJS:发送文件以在Firefox中下载

时间:2016-02-15 15:38:38

标签: javascript angularjs firefox

我在点击按钮时尝试下载多个PDF文件。我目前的代码在Chrome中运行良好,但我无法在Firefox中使用它。

angular.forEach(downloads, function(download) {

    $http.get(download.url, {responseType: 'arraybuffer'}).then(function(response) {
        var blob = new Blob([response.data], {type: "application/pdf"});

        var downloadLink = angular.element('<a></a>');
        downloadLink.attr('href',window.URL.createObjectURL(blob));
        downloadLink.attr('download', download.name);
        downloadLink[0].click();
    });
});

它们位于“网络”标签中,但它们永远不会被发送下载。

enter image description here

是否有任何变通方法可以在Firefox中使用它?

2 个答案:

答案 0 :(得分:0)

我有一个类似的Angular下载,这里的工作是:

var blob = new Blob([response.data], {type: "application/pdf"});
var blobURL = window.URL.createObjectURL(blob);
if (window.navigator.msSaveOrOpenBlob) {
    // of course, IE needs special hand-holding....
    window.navigator.msSaveOrOpenBlob(blob, 'something.pdf');
} else {
    window.open(blobURL);

请确保您不会阻止来自网站的弹出窗口,这会在各种浏览器上多次绊倒我。

答案 1 :(得分:0)

我用IFrame下载。只需将URL传递给此功能即可下载。

.babelrc

然后你可以打电话给

    $scope.downloadUrl = function (url) {
        var oIframe = window.document.createElement('iframe');
        var $body = $(document.body);
        var $oIframe = $(oIframe).attr({
            src: url,
            style: 'display:none;'
        });
        $body.append($oIframe);
        $scope.actions++;
    };