2015-02-03 13 views
5

Z jakiegoś powodu wydaje się to łatwiejsze niż w IE, Chrome/FF:Angularjs/Restangular, jak nazwać plik blob do pobrania?

$scope.download = function() { 
    Restangular.one(myAPI) 
     .withHttpConfig({responseType: 'blob'}).customGET().then(function(response) { 

     //IE10 opens save/open dialog with filename.zip 
     window.navigator.msSaveOrOpenBlob(response, 'filename.zip'); 

     //Chrome/FF downloads a file with random name     
     var url = (window.URL || window.webkitURL).createObjectURL(response); 
     window.location.href = url; 
    }); 
}; 

Czy istnieje sposób, aby zrobić coś podobnego do tego, jak IE10 + pracach? To znaczy, mogę podać nazwę/typ pliku (będzie tylko zip)?

Odpowiedz

17

Tak szybko, jak masz swój obiekt URL można utworzyć kotwicę i ustawić atrybut do pliku, który chcesz download ustaw href dla url obiektu, a następnie po prostu zadzwoń kliknij

var myBlob = new Blob(["example"],{type:'text/html'}) 
 
var blobURL = (window.URL || window.webkitURL).createObjectURL(myBlob); 
 
var anchor = document.createElement("a"); 
 
anchor.download = "myfile.txt"; 
 
anchor.href = blobURL; 
 
anchor.click();

Download attribute compatibility