从blob显示图像mysql
嗨我的数据库中有一个图像表。这些存储为blob以及诸如图像类型&名称的详细信息。从blob显示图像mysql
我有问题显示图像,我得到的只是一个带有红色十字的白色盒子。 代码:
<?php
include '../connection.php';
$ID = $_GET['id'];
$query = "SELECT * FROM `images` WHERE `image_id` = '$ID'";
$result=mysql_query($query);
$row = mysql_fetch_array($result);
$image = $row['image'];
$image_type= $row['image_type'];
header("Content-type: $image_type");
print $image;
exit;
?>
感谢
那么这里是一个简短的答案。
<?php
include '../connection.php';
$id = (int)$_GET['id'];
$query = "SELECT * FROM `images` WHERE `image_id` = '$id'";
$result=mysql_query($query);
$row = mysql_fetch_array($result);
$image = $row['image'];
$image_type= $row['image_type'];
$size = $row['image_size'];
//alternative
/* list($image, $image_type, $size) = array(
$row['image'],
$row['image_type'],
$row['image_size']
);
*/
$ext = explode('/', $image_type);
$name = $id . '.' . $ext[1];
header("Content-type: $image_type");
header("Content-length: $size");
header("Content-Disposition: attachment; filename=$name");
print $image;
exit;
检查blobtype是它能够将数据存储多达16M
这看起来似乎是工作,什么错?
尝试明确指定字段:
SELECT image, image_type FROM ...
当您从数据库中查询,会发生什么?
你喜欢加载图像:
<img src="image.php?id=12">
或者你加载PHP作为自己的页面?
夫妇的事情,试图
或许真的是失败的最小MEDIUMBLOB和它返回一个错误味精在html而不是预期的图像
是正确存储在数据库中的content_type或您是否只存储图像的文件扩展名Ë
内容类型应该是这个样子
image/gif
image/jpeg
图像类型在数据库中显示为“image/pjpeg” – Elliott 2009-05-25 16:57:51
要调试这个问题,我想建议注释掉Content-type标题行,然后敲击t他直接在浏览器中访问网址。这将允许您查看PHP可能发出的任何错误,警告或通知。
您在评论中说过表格最初表示“[BLOB - 64.0 KiB]”,但是您之后将其更改为“MEDIUMBLOB”。这将扩大您可以存储的大小,但是所有现有数据仍将被截断为64KiB。
请确保您使用的字段类型足够大以存储要存储的数据(16MB在MEDIUMBLOB中,或〜4GB在LONGBLOB中,我确定),然后重新插入所有数据。
除了上面提到的安全问题,我不明白为什么代码不能工作,除了数据库问题。
或者,如果你不想创建一个单独的PHP文件,可以内嵌它
<?php
// retrieve blob into $img
?><img src='data:image/png;base64,<?php echo base64_encode($img);?>' alt='Image <?php echo $id;?>'>
什么是存储在数据库?怎么样 ? 你知道blob类型限于64k吗? – 2009-05-25 16:48:55
实际图像存储为数据库中的blob 其余数据为varchar。该图像在数据库中显示为[BLOB-64.0 KiB] – Elliott 2009-05-25 16:50:54
图片是否上传并存储在小于64K的db中? 图像类型是正确的MIME类型,如图像/ PNG或图像/ JPEG? – 2009-05-25 17:03:11