2016-02-15 3 views
0

Я пытаюсь загрузить несколько PDF-файлов при нажатии кнопки. Мой текущий код отлично работает в Chrome, но я не могу заставить его работать в Firefox.AngularJS: Отправить файлы для загрузки в 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?

ответ

0

У меня есть подобный Угловое скачать и то, что здесь работает это:

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); 

Пожалуйста, абсолютно уверен, что вы не блокирует всплывающие окна с сайта, который споткнулся мне несколько раз на разных браузерах.

+0

Это просто открывает его в новой вкладке Chrome –

+0

Chrome всегда открывает PDF здесь, он никогда не загружает их. Вы можете попробовать установить «type» в «application/octet-stream» - это должно принудительно загрузить. –

0

Я использовал IFrame для загрузки. Просто передайте ссылку на эту функцию для загрузки.

$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++; 
    }; 

Тогда вы можете позвонить в

$scope.downloadUrl('/data/url/goes/here'); 
+0

Это помещает содержимое в iframe, но браузер не хочет его загружать. –

+0

Firefox и IE не поддерживают несколько загрузок на той же странице, что и Chrome. Я использовал приведенные выше коды для обхода браузера Firefox, и он работает. См. Это сообщение для получения дополнительной информации о загрузке через iframe: [link] http://stackoverflow.com/questions/3749231/download-file-using-javascript-jquery – brewsky

Смежные вопросы