0

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";
}

}

これは大丈夫だと思います..dbに何かを保存しますが(適切なサイズ)、手動でそれが何であるかを確認できません..だから、このコードでそれを取得しようとすると:

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;
}

注:データベースからの画像の保存と取得の両方が同じファイル(image.php)にあります...

何も得られません...次のように表示してみました:

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

ID をハードコーディングしましたが、データベースに存在します

私も試してみました

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

別のphpファイルを介して取得しますが、取得するのは空の画像だけです(正しいsrcを使用)

私はxampp(mysql 5.5.16; PHP 5.3.8)を使用しています...

4

1 に答える 1

1

以下を使用して、開発環境で通知と警告をオンにします。

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
于 2012-05-10T16:37:24.137 に答える