Angularjs, $http.get on image data 给出特殊字符


Angularjs, $http.get on image data give special characters

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

服务器使用 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]

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

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

你知道吗?

谢谢

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

您需要形成一个 IMG 数据 URL(例如,请参阅此问题的示例:AngularJS - 将字节数组内容显示为图像)

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