小编Job*_*bbo的帖子

PHP 回显来自 MariaDB BLOB 的图像

我有一个 PHP/MariaDB 应用程序,其中一些图像存储为 BLOB。我最近将该应用程序移至云托管服务,并且查看图像的行为被破坏。PHP 服务于图像的 GET 请求是这样的:

    require(__DIR__.'/../include/db/MyDatabase.php');
    
    try {
        $data = (new MyDatabase())->getImage(htmlspecialchars($date));
        header('Content-Type:'.$data['mime']);
        header('Content-Length:'.strlen($data['image']));
        echo $data['image'];
    }catch(Exception $e){
        header('Content-Type:application/json; charset=UTF-8');
        echo json_encode([ 'errors' => [ $e->getMessage() ]]);
    }
Run Code Online (Sandbox Code Playgroud)

$data是一个关联数组,包含图像的 mime 类型、二进制和图像的日期。当我在服务器上托管该应用程序时,效果很好。这是带有 PHP 8.1 和 MySQL PDO 驱动程序 mysqlnd 8.1.2-1ubuntu2.14 的 Ubuntu 22.04。

在云托管服务上,他们使用 PHP 8.2 和 MySQL PDO 驱动程序 3.1.21,并且图像不起作用。内容长度和类型设置:

内容长度和类型

但图像不显示:

破碎的形象

我不知道不同的版本是否会有所不同,但我对可能出现的问题一无所知。

编辑:仅供比较,左侧的请求会返回图像,右侧的请求则不会:

浏览器开发工具

我真的不知道要寻找什么,但是两种环境中都有相同的代码

有谁知道可能出了什么问题,或者去哪里寻找?

php blob mariadb

5
推荐指数
1
解决办法
316
查看次数

标签 统计

blob ×1

mariadb ×1

php ×1