gpt4 book ai didi

php - 显示图像 Blob ,可能编码错误

转载 作者:行者123 更新时间:2023-11-30 23:19:38 27 4
gpt4 key购买 nike

我有一个表单,用户可以在其中将图像上传到我的 MySQL 数据库。该表包含三列:idnameimageImage 是具有默认设置的 blob 列。我能够存储图像数据,但是当我获取数据并尝试在网页上显示它时,我得到的是一张损坏的图像(在本例中是一个 jpeg 文件)。

我怀疑某处的编码出了问题。我的 upload.php 文件以没有 BOM 的 UTF-8 编码。这是我的上传代码:

$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name = addslashes($_FILES['image']['name']);

$insert = $conn->prepare('INSERT INTO images VALUES(:id,:name,:image)');
$insert->bindValue(':id', '');
$insert->bindParam(':name', $image_name);
$insert->bindParam(':image', $image);
$insert->execute();

这是我尝试显示图像的地方。

$select = $conn->prepare('SELECT image FROM images WHERE id = 2');
$select->execute();

$display = $select->fetch();

echo '<img src="data:image/jpg;base64,' . base64_encode( $display['image'] ) . '" />';

我看了一个关于 MySQL 中 blob 的视频教程,其中 blob 列具有 binary 属性。但是,当我尝试创建这样的列时,出现错误 1064。不过我什至不知道它与此有任何关系。

最佳答案

首先,您不应该将 addslashes() 与准备好的语句一起使用(这不是您的问题)。

默认情况下 ->bindParam() 默认类型为 PDO::PARAM_STR,因此您需要指定您传递的数据不是字符串.

尝试:

$insert->bindParam(':image', $image, PDO::PARAM_LOB);

在数据库中存储二进制数据也会导致各种问题。我建议将文件存储到磁盘并将文件的路径存储在数据库中 - 它具有各种优点。

关于php - 显示图像 Blob ,可能编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16093330/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com