2014-04-28 319 views
1

当我通过浏览器访问该网址,却问我要下载的文件下载的zip文件

https://some-domain.com/api/v1/file/log123.tar.gz?type=log

,我需要从angularjs http请求下载此

我写了一个工厂对于这一点,但它不是下载

请求获得200个状态,但仍显示在Firebug装载机

app.factory('File', ['$http','GENERAL_CONFIG', function($http, GENERAL_CONFIG) { 
    var API_URL = GENERAL_CONFIG.BASE_API_URL; 

    API_URL = API_URL + 'filetransfer/'; 

    return { 
     download: function(filename, type,successcallback, errorcallback){ 
      var apiurl = API_URL + filename + '?type='+type 
      $http.get(apiurl,{ 
       headers: { 
        "Content-Type": "application/x-download;" 
       } 
      }).success(successcallback).error(errorcallback); 
     } 
    } 
}]); 
+1

我敢打赌,没有人关心你的'Content-Type'。在我将它交给angularjs之前,浏览器会关心它。已经太晚了,角色本身并不关心。 – maaartinus

回答

0

这是一个旧帖子,但我会回应当前的需求。

您的http请求应该有一个额外的头。 设置responseType:“arraybuffer”。

然后,您可以将该响应转换为blob obj。并将它传递给回调,如下所示:URL.createObjectURL(new Blob([response]));