强制从$ http.post的承诺中下载文件

时间:2016-08-12 15:14:24

标签: angularjs download

我有一个来自对另一个服务的REST调用的文件的内容,我需要强制这些内容到一个机制来触发浏览器下载机制。这基本上是由在别处触发的超链接驱动的,该超链接将引用ID抛出到所述文件。内容以Blob-parsable格式返回。

单击上述链接后,以下代码不会触发任何事件。仔细检查后,似乎插入的超链接永远不会在承诺的范围内被触发。有没有办法让这个工作按预期工作,或者我们应该如何重构此文件下载的链接?

downloadDocument = function (id, fileName) {
    console.log("downloadDocument");
    documentsService.documentsFactory.retrieveDocument(id).then(
            function successCallback(response) {
                var a = document.createElement("a");
                a.style = "display: none";
                var file = new Blob([response], {type: 'application/pdf'});
                var url = window.URL.createObjectURL(file);
                a.href = url;
                a.download = fileName;

                document.body.appendChild(a);
                a.click();
            },
            function errorCallback(response) {
                console.debug("Error with RetrieveDownload call", response);
            }
    );
};

0 个答案:

没有答案