Php HTTP图像输出提供blob数据而不是图像
我的url看起来像..../image/view?id=6 导航到此url时,应显示数据库中的图像。 但现在我得到了一堆奇怪的角色作为回应 当我输出(见下文)时,我看到的是我的图像Php HTTP图像输出提供blob数据而不是图像,php,mysql,http,yii2,Php,Mysql,Http,Yii2,我的url看起来像..../image/view?id=6 导航到此url时,应显示数据库中的图像。 但现在我得到了一堆奇怪的角色作为回应 当我输出(见下文)时,我看到的是我的图像 <img src="data:image/jpeg;base64,'.base64_encode( $image->Data ).'"/> 当前输出开始于: ����JFIF��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v90), default qual
<img src="data:image/jpeg;base64,'.base64_encode( $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�
如果您的图像在进入数据库时是base64编码的,您需要
base64\u解码($img)
,然后显示它。或“数据”“/>;
您似乎在做的是再次编码。如果图像进入数据库时是base64编码的,则要显示它,您需要
base64\u解码($img)
然后显示它。或者“数据”。“/>代码>
return Yii::$app->response->sendContentAsFile(
$image->Data,
$image->Name . '.' . $image->Extension,
['mimeType' => FileHelper::getMimeTypeByExtension($image->Name . '.' . $image->Extension)]
);
请注意,内容类型
标题与文件扩展名不同-请参阅。您可能应该使用以下命令发送此文件:
return Yii::$app->response->sendContentAsFile(
$image->Data,
$image->Name . '.' . $image->Extension,
['mimeType' => FileHelper::getMimeTypeByExtension($image->Name . '.' . $image->Extension)]
);
请注意,
内容类型
标题与文件扩展名不同-请参阅。问题已得到解决,似乎我的文件的编码不正确。。。
文件需要是iso而不是utf-8的问题已得到解决,似乎我的文件的编码不正确。。。
文件需要是iso而不是utf-8检查您的内容类型标题。有关更多详细信息,请查看此Thx以获取建议,但不幸的是,结果仍然相同。我的标题现在是:检查您的内容类型标题。有关更多详细信息,请查看此Thx以获取建议,但不幸的是,结果仍然相同。我的标题现在是:嗨,数据不是base64编码的。当我将数据打印到浏览器时,它从以下内容开始:����JFIF��>创建者:gd jpeg v1.0(使用IJG jpeg v90),默认质量��C$。”,#(7),01444'9=82是否具有jpeg扩展名?是仅此图像还是全部图像?存储在数据库中的数据类型是什么?全部图像:(.安装了一个新数据库,并还原了以前数据库的备份。一切正常。除了数据库中的所有图像和文件都有相同的问题之外。我已向数据库中添加了一个新图像,但仍然存在相同的问题:(我正在将二进制字符串保存到数据库中,数据库字段的类型为mediumblobHi,数据不是base64编码的。当我将数据打印到浏览器时,它以以下内容开始:����JFIF��>创建者:gd jpeg v1.0(使用IJG jpeg v90),默认质量��C$。”,#(7),01444'9=82是否具有jpeg扩展名?是仅此图像还是全部图像?存储在数据库中的数据类型是什么?全部图像:(.安装了一个新数据库,并还原了以前数据库的备份。一切正常。除了数据库中的所有图像和文件都有相同的问题之外。我已向数据库中添加了一个新图像,但仍然存在相同的问题:(我正在将一个二进制字符串保存到数据库中,数据库字段的类型为mediumblobTested代码,图像会立即下载到我的电脑。不幸的是,图像似乎“损坏/损坏或太大”。虽然我可以使用base64在img标记中显示图像(但这不是我的首选解决方案)你确定没有添加过多的标题吗?或者在发送文件之前没有添加过多的输出?嗨,我已将代码更改回原始代码,并将标题添加到问题中。数据是一个二进制字符串,它位于我的medium Bloby类型数据库中。你有两个
内容类型
标题。你需要找出内容类型的来源:text/html;charset=UTF-8
标题。将我的代码更改为您的示例,但添加了参数'inline'=>true
。标题更正确(问题已更新)。但图像在我使用的链接上仍然不可见。测试代码后,图像会立即下载到我的电脑上。不幸的是,图像似乎不正确“损坏/损坏或太大”。虽然我可以使用base64在img标签中显示我的图像(但这不是我的首选解决方案)你确定没有添加过多的标题吗?或者在发送文件之前没有添加过多的输出?嗨,我已将代码更改回原始代码,并将标题添加到问题中。数据是一个二进制字符串,它位于我的medium Bloby类型数据库中。你有两个内容类型
标题。你需要找出内容类型的来源:text/html;charset=UTF-8
标题。将我的代码更改为您的示例,但添加了参数'inline'=>true
。标题更加正确(问题已更新)。但图像在我使用的链接上仍然不可见
return Yii::$app->response->sendContentAsFile(
$image->Data,
$image->Name . '.' . $image->Extension,
['mimeType' => FileHelper::getMimeTypeByExtension($image->Name . '.' . $image->Extension)]
);