1

我对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();
}
?>
4

3 回答 3

2

您的代码中不能有header任何输出:http: //php.net/manual/en/function.header.php

最佳做法是将图像上传到目录并将图像的路径/文件名存储在数据库中。还可以更轻松地操作图像,例如使用 PHP 创建不同大小和缩略图。而且它占用的磁盘空间少了大约四倍......

于 2012-11-26T23:20:56.833 回答
0

希望您不要将图像存储在 MySQL 上,如果您这样做了,请停止这种有害行为,因为它会使您的数据库变得不必要地沉重......

于 2012-11-26T23:22:08.757 回答
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();
}
?>
于 2012-11-27T00:34:19.353 回答