Php HTTP图像输出提供blob数据而不是图像

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

我的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 quality ��C     $.' ",#(7),01444'9=82<.342��C     2!!22222222222222222222222222222222222222222222222222���"��    ���}!1AQa"q2���#B��R��$3br� 

如果您的图像在进入数据库时是base64编码的,您需要

  • 使用
    base64\u解码($img)
    ,然后显示它。或
  • 执行此操作:echo
    “数据”“/>;

  • 您似乎在做的是再次编码。

    如果图像进入数据库时是base64编码的,则要显示它,您需要

  • 使用
    base64\u解码($img)
    然后显示它。或者
  • 执行此操作:echo
    “数据”。“/>
  • 您所做的似乎是再次对其进行编码。

    您可能应该使用来发送此文件:

    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)]
    );