php - 显示来自 php 文件的图像(存储在 mysql 数据库中)

标签 php mysql

我正在尝试显示存储在 mysql 数据库中的图像。 我这样存储:

if (isset($_SESSION['mod']) && (isset($_GET['upload'])) ) {
    if (isset($_FILES['image'])  && $_FILES['image']['size'] > 0) { 

    $con = mysql_connect("localhost", "root");
    mysql_select_db("psi", $con);

      // Temporary file name stored on the server
      $tmpName  = $_FILES['image']['tmp_name'];  

      // Read the file 
      $fp      = fopen($tmpName, 'r');
      $data = fread($fp, filesize($tmpName));
      $data = addslashes($data);
      fclose($fp);

      //now i use <tmpName> as an actual name of file
      $tmpName  = $_FILES['image']['name'];  
      if (isset($_GET['name']))
        $tmpName = $_GET['name'];

        $uname = $_SESSION['uname'];
        $idObj = mysql_query("SELECT id_object AS id FROM tobject WHERE uname = '$uname'");
        $idObj = mysql_fetch_assoc($idObj);
        $idObj = $idObj['id'];

      // Create the query and insert
      // into our database.
      $query = "INSERT INTO slike ";
      $query .= "VALUES ('', '$idObj', '$data', '$tmpName')";
      $results = mysql_query($query, $con);

      // Print results
      print "Thank you, your file has been uploaded.";

}
else {
   print "No image selected/uploaded";
}

}

我想这没问题..它确实在数据库中存储了一些东西(适当的大小),但我无法手动看到它是什么..所以,当我尝试使用此代码获取它时:

else if (isset($_GET['idSlike'])) {
$idSlike = $_GET['idSlike'];

    $con = mysql_connect("localhost", "root");
    mysql_select_db("psi", $con);

$res = mysql_query("SELECT slika FROM slike WHERE id_slika = '$idSlike'");
if (!$res) {
    die("greska: " . mysql_error());
};

$slika = mysql_fetch_array($res);
$slika = $slika['slika'];
header('Content-Type: ' . $slika['mimetype']);
echo $slika;
}

note: both storing and getting images from db are in same file (image.php)...

我什么也没得到... 我尝试用以下方式显示它:

<img src="image.php?idSlike=10"/>

i hardcoded ids but they exist in db

我也尝试过

echo "<img src=\"image.php?idSlike=13\">";

通过另一个 php 文件,但我得到的只是一个空图像(具有正确的 src)

我正在使用 xampp(mysql 5.5.16;PHP 5.3.8)...

最佳答案

通过以下方式在您的开发环境中打开通知和警告:

ini_set("display_errors", 1);
error_reporting(E_ALL);

你正在做一些无意义的事情(如果你允许的话,PHP 会告诉你):

$slika = mysql_fetch_array($res);
$slika = $slika['slika'];
header('Content-Type: ' . $slika['mimetype']); // <-- $slika is a string not an array
echo $slika; // <-- if $slika is an array here, you can not echo is like this

关于php - 显示来自 php 文件的图像(存储在 mysql 数据库中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10538523/

相关文章:

php - 由于某种原因,链接样式不适用于链接

php - 将多维数组变成单个数组?

mysql - 将 MySQL Server 从版本 5.6.14 修补到 5.6.21

mysql - 加入表格并选择条目 < x 小时

php - 在 MacOS Sierra 上找不到 OpenSSL

PHP/MySQL : Match content of one table with another and print that instead

php - 如何使用 php ajax 和 mysql 动态更改内容

mysql - 更改 IP 地址后由于 DEFINER 错误无法更改 MySQL 功能

mysql - SQL - 如何忽略 $nb 结果?

php - 如何使用特殊排序/mysql-php 连接表