2017-08-06 41 views
1

我正在嘗試使用頭像圖片創建用戶配置文件;我已經使用Muller成功上傳了頭像圖片;現在我正在嘗試提供編輯配置文件的選項;作爲編輯的一部分,我必須在客戶端顯示頭像圖片;我已經在中間件中編寫了一個服務來使用res.sendFile返回頭像圖像;expressjs中間件中的「res.sendFile」和角度客戶端中的「ng-src」組合不起作用

中間件控制器:

exports.readAvatar = function(req, res) { 
    if (req.user) { 
     res.sendFile(path.resolve(__dirname + "/../../uploads/" + req.user.avatar)); 
    } 
} 

我甚至測試從一個瀏覽器在這種服務,併成功地工作,但是當我嘗試使用納克-src的與數據的URL象下面顯示該化身的服務的響應時,它不工作。

客戶端控制器:

Users.avatar($routeParams.userId).then(function(data) { 
    $scope.avatar = "data:image/jpeg;base64,"+data; 
}, function(errorResponse) { 
    $scope.error = errorResponse.message 
}); 

HTML:

<img data-ng-src="{{avatar}}" > 

當我一派,我發現res.sendFile被實際發送字節流;所以我試圖將其轉換爲字符串,然後對轉換後的字符串進行編碼,並在ng-src中使用此編碼字符串,但無濟於事。任何幫助將不勝感激/

+0

什麼是您的數據包含哪些內容?它可能必須是data.data – Vivz

+0

@Vivz,數據包含res.sendFile返回的字節流;數據如下所示:「Resource {0:」 「,1:」 「,2:」 「,3:」 「,4:」「,5:」「,6:」J「,7:」F「,8:」I「,9:」F「,10:」..「索引在那裏直到68889 –

+0

將路徑傳遞給頭像變量中的圖像文件 – Vivz

回答

0

您必須將正確的路徑值傳遞到ng-src

JS

Users.avatar($routeParams.userId).then(function(response) { 
    //capture whatever is necessary to show image 
    $scope.user=response.data; 
}, function(errorResponse) { 
    $scope.error = errorResponse.message 
}); 

HTML

<img ng-src="https://stackoverflow.com/users/{{user._id}}/avatar"> 

欲瞭解更多信息https://docs.angularjs.org/api/ng/directive/ngSrc