保存为blob需要很长时间才能从给定的URL下载文件

时间:2015-12-29 13:56:40

标签: javascript angularjs download blob save-as

我编写了以下服务来保存给定网址的文件。

(function() {
    angular.module('SOME_APP')
        .service("downloadService", downloadService);

        function downloadService($http){

            var downloadFileFromUrl = downloadFileFromUrl;

            function downloadFileFromUrl(url){

                if(!url.length){
                    //TO-DO handle the error
                }

                else{
                    //find the file name and extension, to save it as:
                    var fileName;
                    for(var i=url.length; i>=0; i--){
                        if(url[i]=='/'){
                            fileName=url.slice(i+1, url.length);
                            console.log(fileName);
                            break;
                        }
                    }
                    $http({
                        url: url,
                        method: "GET",
                        responseType: 'arraybuffer'
                        }).success(function (data) {
                            var blob = new Blob([data], {type: '*/*'});
                            saveAs(blob, fileName);
                        }).error(function (data) {
                            console.log(data);
                            //TO-DO error handling
                    });
                }
            }

            return {
                    downloadFileFromUrl : downloadFileFromUrl
            }
        }
}());

当我调用该服务时,服务首先下载该文件,一旦下载完成,它就会在浏览器中显示下载(进度为100%)。如何让它正常工作? (在浏览器中启动下载,并逐步显示进度)

1 个答案:

答案 0 :(得分:0)

我的目的是从给定的网址下载文件。我使用带有下载属性的HTML5锚标记实现了它:

在index.html中:

               <a id='downloadTag' href="" download hidden></a>

在服务中:

                document.getElementById("downloadTag").href=url;
                document.getElementById("downloadTag").click();

这解决了我的问题。