我们正在Web应用程序中实施比利时eID身份提供商。这一切都很有效,直到我们试图显示返回的图片。文档说明在发送到浏览器之前返回的字符串应为base64_decoded
。但这样做会导致“破损”的图像。
直接在src
标记的img
属性中打印字符串似乎也不起作用。
有人能指出我们正确的方向吗?提前谢谢!
字符串:
_9j_4AAQSkZJRgABAgE3[...]V9XjlXKMGHtS7aaRnvSAAVXuL2C3H7yQA-nU1h6jq5nBSIbUPfuayScnJNH1o704d6XIHev_Z
文档中的代码:
header('Content-Type: image/jpeg');
session_start();
// echo decoded image payload
echo base64_decode($_SESSION["imagedata"]);
// imagedata holds the above string
// results in browser error message 'image could not be loaded' when visiting directly
由于我们使用的是Yii2,因此应采取以下行动:
$response = Yii::$app->getResponse();
$response->format = Response::FORMAT_RAW;
$response->data = Yii::$app->session["imagedata"];
$response->headers->set("Content-Type", "image/jpeg");
//$response->headers->set("Content-Encoding", "base64"); ??
// echo decoded image payload
return Yii::$app->response;
许多其他尝试之一:
<img src="data:image/jpeg;base64,[string]"> <!-- resulted in 0x0 'image' -->
编辑: 事实证明它与Yii2有关,可以清理authClient中的响应。任何人都知道如何禁用某些值吗?
答案 0 :(得分:1)
在您的代码中,我看到$response->headers->set("Content-Type", "image/png");
,文档说jpeg
所以我认为您应该将其更改为image/jpeg
。您正在混合错误的图像形式,这可能导致它显示错误。如果这不起作用,请确保您的图像在某些方面没有弄乱或损坏。您可以使用https://forums.asp.net/t/1589195.aspx?Adding+a+font+to+use+in+visual+studio来测试图片。