Angularjs 角度:显示来自REST服务的图像

Angularjs 角度:显示来自REST服务的图像,angularjs,image,rest,binary,base64,Angularjs,Image,Rest,Binary,Base64,经过研究和测试,我仍然无法在Angular应用程序上显示图像表单RESTAPI。我的RESTWeb服务上有可用的图像,为什么我要使用ReST服务?因为为了访问,您需要经过身份验证(我使用OAuth2协议)。当我使用POSTMan(ReST客户端非常有用)时,一切都很好,图像显示时什么也不做。但是,当我尝试在$http之后用Angular显示它时,它不起作用 以下是从服务接收到的标头: Content-Length → 51756 Content-Type → image/jpeg; charse

经过研究和测试,我仍然无法在Angular应用程序上显示图像表单RESTAPI。我的RESTWeb服务上有可用的图像,为什么我要使用ReST服务?因为为了访问,您需要经过身份验证(我使用OAuth2协议)。当我使用POSTMan(ReST客户端非常有用)时,一切都很好,图像显示时什么也不做。但是,当我尝试在$http之后用Angular显示它时,它不起作用

以下是从服务接收到的标头:

Content-Length → 51756
Content-Type → image/jpeg; charset=binary
Server → Apache/2.4.9 (Win64) PHP/5.5.12
X-Powered-By → PHP/5.5.12
这是我的角度代码:

var data64 = $base64.encode(unescape(encodeURIComponent(data)));
scope.src = 'data:image/jpeg;charset=binary;base64,' + data64;
和我的HTML:

<img ng-src="{{src}}" border="0" />

有关信息,我使用angular-base64()作为编码。如果没有“unescape”和“encodeURIComponent”,我会出现一个错误,我试图删除空白,但仍然不起作用


谢谢:)

这似乎不起作用,因为您告诉浏览器图像数据是base64编码的,但您还使用
unescape
encodeURIComponent
对其进行了转换

为什么不将图像数据提取到二进制数据结构(需要现代浏览器)中,而不是字符串中:

$http.get(req, {responseType: "arraybuffer"}).
    success(function(data) {
        $scope.src = 'data:image/jpeg;base64,' + _arrayBufferToBase64(data);
    });
\u已定义阵列缓冲区64



另一种方法是安装一个请求拦截器,识别图像url,并为这种情况添加oauth标头。

为什么不直接将REST-url放入ng src?您好,因为我需要添加标头,就像我说的,我使用oauth协议,所以我需要添加一些标头和令牌…明白了。您的标题显示它是一个
图像/jpeg
,但您的数据字符串以
图像/png
开头。为什么要包含
charset=binary
?很抱歉,我在复制之前忘记将png更改为jpeg,但即使删除charset=binary,它仍然无法工作…很好!)这对我有用。我将测试浏览器的兼容性(它可以在Chrome上运行),谢谢