我对php比较新。从mysql数据库中检索blob数据后,我在浏览器(谷歌浏览器)中显示图像时出现问题。
基本上,当在底部的回声前添加斜杠时,以下代码有效。然而,我已经按照其他在线教程和导师已经能够显示他们的图像,而不使用斜杠,而我无法得到图像。我只是想知道标准规则是什么?另外要添加的东西 - 当我无法在浏览器中获取图像时,我会得到一个ting缩略图。如果有人能告诉我如何可靠地显示图像,我真的很感激。我想创建的网站只是关于图像。所以它的基础。非常感谢你的时间。
<?php
$conn = mysql_connect ("localhost","root","arctic123");
$db = mysql_select_db ("user_images", $conn);
if(!$db) {
echo mysql_error();
}
$q = "SELECT * FROM images";
$r = mysql_query ("$q",$conn);
if($r) {
while($row = mysql_fetch_array($r)) {
//echo $row ['username'];
//echo "<br>";
header ("Content-type: image/jpeg");
echo $row ['logo'];
//echo "<br>";
}
}else{
echo mysql_error();
}
?>
答案 0 :(得分:2)
您的代码中的任何输出后都无法header
:http://php.net/manual/en/function.header.php
最佳做法是将图像上传到目录,然后将图像的路径/文件名存储在数据库中。还可以更容易地操纵图像,例如使用PHP创建不同的大小和缩略图。它占用磁盘空间大约四倍......
答案 1 :(得分:0)
希望你没有将你的图像存储在MySQL上,如果你这样做,请停止这种有害行为,因为它会使你的数据库不必要地沉重......
答案 2 :(得分:0)
我建议不要将图像存储在数据库中。虽然技术上可行,但它存在严重的性能问题。最佳做法是为图像指定一个文件夹,然后直接访问它们。如果您想要MySQL的过滤和排序,请将当前存储图像数据的BLOB列替换为包含文件名的VARCHAR。
<?php
$conn = mysql_connect ("localhost","root","arctic123");
$db = mysql_select_db ("user_images", $conn);
$imgdir = "/path/to/image/directory/";
if(!$db) {
echo mysql_error();
}
$q = "SELECT * FROM images";
$r = mysql_query ("$q",$conn);
if($r) {
while($row = mysql_fetch_array($r)) {
echo $row['username'];
echo "<br>";
echo "<img src='" . $imgdir . $row['logo'] . "' />";
echo "<br>";
}
}else{
echo mysql_error();
}
?>