Angularjs / Restangular, как назвать файл blob для загрузки?

по какой-то причине это кажется проще в IE, чем Chrome/FF:

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

есть ли способ сделать что-то подобное тому, как работает IE10+? То есть я могу указать имя/тип файла (будет только zip)?

2 ответов


Как только у вас есть url объекта, вы можете создать якорь и установить скачать атрибут имени файла, который вы хотите, установите href в url объекта, а затем просто вызовите click

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

загрузить совместимость атрибутов


просто используйте https://www.npmjs.com/package/angular-file-saver Таблицу поддержки браузера можно посмотреть здесь:https://github.com/eligrey/FileSaver.js/