2017-02-22 58 views
2

下載使用,直到我升級角到最新的工作在我的應用精細文件斑點法損壞。即使是現在,該文件正在下載,但問題是,它正在被損壞。上傳文件工作正常,如果我們簽入文件服務器,文件將完好無損。但下載後,我收到損壞的文件。下載文件得到使用angularJS

HTML:

<td data-title="''"> 

    <a tooltip="Download CV" ng-hide="!talent.resumePath" tooltip-trigger tooltip-animation="false" tooltip-placement="bottom" ng-click="downloadResume(talent.id)" data-placement="top" data-toggle="tooltip" data-original-title="resume"> 
     <img src="../../img/DownloadIcon.png" /></a> 
</td> 

控制器:

downloadResume: function(employeeId) { 
    return apiServices.getFileFromTalentPool('/talentpool/resume?id=' + employeeId) 
}, 

其中,getFileFromTalentPool是:https://hastebin.com/yivaterozi.js

端點:

public FileResult GetResume(int id) { 
    var result = _services.GetResume(id); 
    if (result != null) { 
     HttpContext.Response.ContentType = result.ContentType; 
     HttpContext.Response.Headers["Access-Control-Expose-Headers"] = "FileName"; 
     HttpContext.Response.Headers["FileName"] = result.FileDownloadName; 
    } 
    return result; 
} 

通常我道禁止Doc文件。我試着用記事本文件來查看它是否相同。奇怪的是,我注意到,我能打開記事本文件,但其內容操縱像[object Object]。但對於DOC文件,它只是顯示http://oi68.tinypic.com/2i11m9y.jpg

我怎樣才能解決這個問題?

回答

3

它看起來像https://hastebin.com/yivaterozi.js的代碼已從使用已棄用的$http.success()方法更新爲當前的$http.then()。 (內then法)無極」成功回調函數接收對象只有一個參數:https://docs.angularjs.org/api/ng/service/ $ HTTP。過時的「成功」的方法得到了更多的參數(數據,狀態,標題)和data已經包含原始數據。當使用then(),數據位於下響應的data財產,所以要儘量您$http電話更改爲:

$http({ 
    method: 'GET', 
    cache: false, 
    url: fileurl, 
    responseType:'arraybuffer', 
    headers: { 
    'Authorization': "Bearer " + $rootScope.userInfo.access_token, 
    'Access-Control-Allow-Origin': '*' 
    } 
}).then(function (data) { 
    var octetStreamMime = 'application/octet-stream'; 
    var success = false; 

    // Get the headers 
    var headers = data.headers(); 
    ... 
    ... 

請注意,標題被取這裏從數據對象,而不是從第三個參數正確(剛加入var,因爲我們刪除了空的參數)。 現在使用的每個數據的地方,將其更改爲data.data,如:

// Try using msSaveBlob if supported 
var blob = new Blob([data.data], { type: contentType }); 

或者只是改變參數數據響應並添加var data = response.data; ANF修改標題消氣劑headers = response.headers();

$http({ 
    method: 'GET', 
    cache: false, 
    url: fileurl, 
    responseType:'arraybuffer', 
    headers: { 
    'Authorization': "Bearer " + $rootScope.userInfo.access_token, 
    'Access-Control-Allow-Origin': '*' 
    } 
}).then(function (response) { 
    var octetStreamMime = 'application/octet-stream'; 
    var success = false; 

    // Get data 
    var data = response.data; 

    // Get the headers 
    var headers = response.headers(); 
    ... 
    ... 
+0

非常感謝。這就像一個魅力! :) – Phoenix