2014-04-17 144 views
1

我有問題顯示圖像存儲在數據庫中作爲一個blob。我在很多論壇搜索過,但找不到任何答案。不顯示斑點圖像

我把代碼分成兩個文件。在index.php我插入圖像,並嘗試從get_image.php文件加載它。

這裏是index.php文件

<form action="index.php" method="POST" enctype="multipart/form-data"> 
        File: 
        <input type="file" name="image"> <input type="submit" value="upload"> 
       </form> 

       <?php 
        $file = $_FILES['image']['tmp_name']; 

        if(!isset($file)){ 
        echo "Please select an image."; 
        } 

        else{ 
        $image_name = mysql_real_escape_string($_FILES['image']['name']); 
        $image = mysql_real_escape_string(file_get_contents($_FILES['image']['tmp_name'])); 
        $imageType = mysql_real_escape_string($_FILES['image']['type']); 
        $image_size = getimagesize($_FILES['image']['tmp_name']); 


        if($image_size == FALSE){ 
         echo "That's not an image"; 
        } 
        else{ 
         if (!$insert = mysql_query("UPDATE 'table_name' SET `image` = '$image' WHERE 'row_name' = '$student_id'")){               
         echo "Problem updating image"; 
         } 

         else{              
         echo "<img src=get_image.php>"; 
         } 

        } 
        } 
       ?> 

而且get_image.php

<?php 

     $query = mysql_query("SELECT image FROM table_name WHERE student_id = 51686"); 
     while($row= mysql_fetch_assoc($query)){ 
      $imageData = $row['image']; 
     } 

     header("Content-type: image/png"); 
     echo $imageData;   
?> 

誰能幫助請。我的PHP版本是5.2在輸出有圖像圖標,但沒有圖像。如果我右鍵單擊並嘗試將其另存爲圖像,它不是圖像格式,它保存爲get_image.php。所以我不知道是什麼問題。

+0

嘗試更改內容類型爲文本/平原和打開圖像url直接。查找png代碼前面的空格和錯誤消息。 (你有沒有連接你的dbms,並在get_image.php中選擇了一個數據庫?) – urzeit

+0

@urzeit更改爲text/plain沒有差異,沒有得到你,如何打開直接在Blob中的圖像,我從db中獲取它,自動地,png代碼以「?Jw?= wf?yf?y?)?」開始。是的,我連接我的數據庫在get_image.php – Tracker7

+0

從這裏我們可以看到,數據是不是有效的png(它以'\ 211PNG'開頭。所以我們必須看你存儲和加載到你的數據庫。 – urzeit

回答

0
$pdo = new PDO('mysql:dbname=database_name;host=localhost', 'username', 'password', 
     array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')); 

     $imageName = mysql_real_escape_string($_FILES["image"]["name"]); 
     $imageData = file_get_contents($_FILES["image"]["tmp_name"]); 
     $imageType = mysql_real_escape_string($_FILES["image"]["type"]); 

     $stmt = $pdo->prepare('INSERT INTO image (name,image) VALUES (:name,:image)'); 
     $stmt->bindParam(':image', $imageData, PDO::PARAM_LOB); 
     $stmt->bindParam(':name', $imageName); 
     $stmt->execute(array('name' => $imageName, 'image' => $imageData)); 
     echo "Image Uploaded"; 


     $res = mysql_query("SELECT * FROM image "); 
     while ($row = mysql_fetch_assoc($res)) 
     {             
     echo "<img src=data:image/jpeg;base64," . (base64_encode(($row['image']))) . " style='width:60px;height:60px;'>"; 
     } 
0

請儘量像這樣插入記錄如下

$tmpImageName=$_FILES['files']['tmp_name']; 
$handle  = fopen($tmpImageName, 'r'); 
$content = fread($handle, filesize($tmpImageName)); 
fclose($handle); 

$sql='insert into imagetest(image)values("'.mysql_escape_string($content).'")'; 

mysql_query($sql) or die(mysql_error()); 

,然後嘗試像這裏顯示的圖像

$res = mysql_query("SELECT * FROM imagetest"); 
while ($row = mysql_fetch_assoc($res)) { 
    echo "<img src=data:image/jpeg;base64," . (base64_encode(($row['image']))) . " >"; 
    } 
+0

已經嘗試過,還是沒有結果 – Tracker7

+0

可以請 嘗試使用phpMyAdmin使用插入記錄 上傳mysql中的圖像,並嘗試這個代碼 我已經試過 但也只是等待秒我有另一種解決方案 –

+0

仍然是相同的結果 – Tracker7