2014-10-02 16 views
11

Próbuję wyświetlić plik binarny za pomocą metody sugerowanej w tym poście AngularJS: Display blob (.pdf) in an angular app. Działa to ładnie w Chrome i FF, ale IE 11 daje mi "Błąd: Odmowa dostępu". Czy ktoś wie, czy ma coś wspólnego z obiektem Blob i może wskazać mi właściwy kierunek? Oto mój kod JS:Wyświetlanie pliku binarnego (pdf) w IE 11

$http.get(baseUrl + apiUrl, { responseType: 'arraybuffer' }) 
      .success(function (response) {     
      var file = new Blob([response], { type: 'application/pdf' }); 
      var fileURL = URL.createObjectURL(file); 
      $scope.pdfContent = $sce.trustAsResourceUrl(fileURL); 
      }) 
      .error(function() {       
      }); 

i mój html:

<div ng-controller="PDFController" class="modal fade" id="pdfModal" tabindex="-1" role="dialog" aria-hidden="true"> 
<div class="modal-dialog modal-lg"> 
    <div class="modal-content" onloadstart=""> 
     <object data="{{pdfContent}}" type="application/pdf" style="width:100%; height:1000px" /> 
    </div> 
</div> 

+0

obejścia : W końcu użyłem [FileSaver.js] (https://github.com/eligrey/FileSaver.js/), ale nadal będę wdzięczny, jeśli ifonw może mi powiedzieć dlaczego powyższa technika nie działa w IE 11 ... – jymuk

+1

Mam również ten problem, czy kiedykolwiek działało to bez FileSaver.js? – Madhatter5501

+0

Nie, niestety nie ... – jymuk

Odpowiedz

5

IE 11 blokuje wyświetlanie blob, trzeba użyć następujących:

    var byteArray = new Uint8Array(someByteArray); 
       var blob = new Blob([byteArray], { type: 'application/pdf' }); 
       if (window.navigator && window.navigator.msSaveOrOpenBlob) { 
        window.navigator.msSaveOrOpenBlob(blob); 
       } 
       else { 
        var objectUrl = URL.createObjectURL(blob); 
        window.open(objectUrl); 
       } 
Powiązane problemy