2014-04-28 256 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]));