我的网址看起来像.... / image / view?id = 6
导航到该URL应该可以从我的数据库中获得图像。 但是目前,我得到了一堆奇怪的字符作为回应。
当我输出(见下文)时,我正在看到我的图像。
<img src="data:image/jpeg;base64,'.base64_encode( $image->Data ).'"/>
我正在使用这段代码来生成我的HTTP响应,但是响应只是blob数据:
header('Content-Type :'.$image->Extension);
header('Content-Disposition: filename='.$image->Name.'.'.$image->Extension);
header('Content-Length: ' . strlen($image->Data));
$response->format = Response::FORMAT_RAW;
$response->data = $image->Data;
当前输出始于:
����JFIF��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v90), default quality ��C $.' ",#(7),01444'9=82<.342��C 2!!22222222222222222222222222222222222222222222222222���"�� ���}!1AQa"q2���#B��R��$3br�
使用的标题:
Accept-Ranges: bytes
Cache-Control: private
Content-Disposition: inline; filename="FYdsl67l4PWJQ7QFFeo14Ena76gr0pEP.jpg"
Content-Length: 320135
Content-Type: image/jpeg
Date: Mon, 28 Jan 2019 19:05:11 GMT
Expires: 0
Pragma: public
Server: Microsoft-IIS/8.5
X-Powered-By: PHP/5.6.24, ASP.NET
任何帮助将不胜感激
答案 0 :(得分:2)
如果图像进入数据库时是经过base64编码的,则要显示它,您要么需要
base64_decode($img)
,然后显示它。或'<img src="data:image/jpeg;base64,' . $image->Data . '"/>;
您似乎正在做的是再次对其进行编码。
答案 1 :(得分:0)
您可能应该使用Response::sendContentAsFile()
发送此文件:
return Yii::$app->response->sendContentAsFile(
$image->Data,
$image->Name . '.' . $image->Extension,
['mimeType' => FileHelper::getMimeTypeByExtension($image->Name . '.' . $image->Extension)]
);
请注意,Conent-Type
标头与文件扩展名不同-请参考FileHelper::getMimeTypeByExtension()
。
答案 2 :(得分:0)
问题已修复,似乎我的文件编码不正确... 文件必须是iso而不是utf-8