Angularjs,$ http.get对图像数据给出特殊字符

时间:2015-01-23 13:43:12

标签: php ajax angularjs rest

我使用PHP和slim框架的私有API。当我得到一条给我一个图像数据的路线时,响应似乎很奇怪(就像charset问题)。

服务器使用readfile()php函数发送图像:

$src = "image.png";
$this->app->contentType("image/png");
$this->app->response()->status(REQ_OK);
header('Content-length: '.filesize(SITE_PATH.$src));
readfile(SITE_PATH.$src);

在客户端,我使用AngularJS和$ http。

$http({
      method: 'GET',
      url: "/myRoute",
      headers: {
               'responseType': "image/png"
      }
)
.success(function(result){
   //treatment
})
.error(function(){

});

在Chrome上,在xhr预览中,我得到了这个: ![在此输入图像说明] [1]

请参见此处的屏幕截图http://i.stack.imgur.com/G5Cna.png

如果我将数据发送到img的ng-src,它就不起作用了。因为奇怪的编码。

你有什么想法吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

问题在于您尝试将二进制图像插入到HTML源代码中,这是不可能的。

您需要形成一个IMG数据网址(例如,请参阅此问题:AngularJS - Show byte array content as image

或者您需要让浏览器为您执行img加载。这意味着要创建一个<img ng-src="{{imgPath}}" />,其中imgPath指的是内容为/myRoute的变量。