【发布时间】:2013-04-18 21:22:18
【问题描述】:
我有一个表单,用户可以将图像上传到我的 MySQL 数据库。该表包含三列:id、name 和 image。 Image 是具有默认设置的 blob 列。我能够存储图像数据,但是当我获取数据并尝试将其显示在网页上时,我得到了一个损坏的图像(在这种情况下它是一个 jpeg 文件)。
我怀疑某处的编码有问题。我的 upload.php 文件以 UTF-8 编码,没有 BOM。这是我的上传代码:
$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 列具有 binaryattribute。但是,当我尝试创建这样的列时,我收到错误 1064。我什至不知道这与此有什么关系。
【问题讨论】: