javascript - Angularjs/Restangular,如何命名文件 blob 以供下载?

标签 javascript angularjs restangular

出于某种原因,这在 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)?

最佳答案

一旦你有了你的对象 url,你就可以创建一个 anchor 并设置 download属性为您想要的文件名,将 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();


Download attribute compatibility

关于javascript - Angularjs/Restangular,如何命名文件 blob 以供下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28310366/

相关文章:

css - 如何将 Angular.js 表单加载到 jsFiddle?

java - 反序列化 Json 数据类型文件

javascript - Angular 用户界面路由器解决不解决链式 promise

angularjs - 如何使用 Restangular 通过 GET 发送参数数组

javascript - 如何检查本地存储变量是否为空或未定义?

javascript - 获取对象数据的浅拷贝的最快方法是什么?

javascript - 有没有办法避免 AngularJS 在页面加载之前显示所有隐藏的元素?

javascript - 为什么 chrome.storage.local 只保存最后一条记录?

javascript - every() some() 和函数返回函数

javascript - TypeError : Service. functionName 不是函数