2016-04-21 22 views
0

Ich benutze Angular-File-Saver-Dienst https://github.com/alferov/angular-file-saver zum Herunterladen von Dateien. Download ist gut, aber wenn ich versuche, Word-Dokument zu öffnen, bekomme ich Datei beschädigt und Word kann es nicht öffnen und wenn meine API direkt in Browser-Datei ist gut, wenn ich es öffne, so nehme ich an, Blob tut etwas für dieses Problem ... Für .txt Dateien Ich werde nicht beschädigt, es ist nur gut für .docx und für .jpeg oder .png. Unten finden Sie meinen Kurzcode zum Herunterladen von Dateien.Erhalten beschädigtes Word-Dokument bei Verwendung von FileSaver und Blob in angularjs

function downloadDocument(fileId, fileName, documentExt) { 
      var deferred = $q.defer(); 

      var id = encodeURIComponent(fileId); 
      Restangular.one('download?fileId=' + id).get().then(function(data) { 
       var file = new Blob([data]); 
       if (documentExt && documentExt !== 'undefined') { 
        FileSaver.saveAs(file, fileName + '.' + documentExt); 
       } 
       else { 
        FileSaver.saveAs(file, fileName); 
       } 
      }); 

      return deferred.promise; 
     } 

Antwort

0

können Sie unter Code geben verwenden Ihre file--

function downloadDocument(fileId, fileName, documentExt) { 
      var deferred = $q.defer(); 

      var id = encodeURIComponent(fileId); 
      Restangular.one('download?fileId=' + id).get().then(function(data) { 
       // try to use data.data or data in blob object 
       var file = new Blob([data.data], { 
        type: 'application/octet-binary' 
       }); 
       var fileUrl = URL.createObjectURL(file); 
       // for IE 10+ 
       if (window.navigator.msSaveOrOpenBlob) { 
        window.navigator.msSaveOrOpenBlob(file, fileName+'.'+documentExt); 
       } else { 
        var element = document.createElement('a'); 
        element.href = fileUrl; 
        element.setAttribute('download', fileName+'.'+documentExt); 
        element.setAttribute('target', '_blank'); 
        document.body.appendChild(element); 
        element.click(); 
       } 
      }); 

      return deferred.promise; 
     } 
+0

Nun habe ich versucht, diesen Code zu speichern und immer noch Fehler angezeigt: https://snag.gy/HwE1mg .... – Bukic

+0

Can Sie geben mir Ihren Server-Side-Code? –

+0

Hey Shaliendra, gut Server-Seite ist kein Problem, zum Beispiel diesen API-Aufruf, auf den ich bin, wenn ich diese Funktion aufrufen: https: // localhost: 8080/herunterladen? FileId = workspace% 3A% 2F% 2FSpacesStore% 2F09d8bd7c 03d7-411d-9ded-d825d86b19e9% 3B1.0 wenn ich dies im Browser direkt und versuchen, Datei zu öffnen, die in Word heruntergeladen wird es funktioniert es ist noch beschädigt. – Bukic