2011-05-06 166 views
0

我想顯示存儲在MySql數據庫中的圖像。來自mysql數據庫的圖像不顯示在瀏覽器

我有以下表

CREATE TABLE `Pictures` (
`Id` varchar(36) character set utf8 NOT NULL, 
`Name` varchar(100) character set utf8 NOT NULL, 
`Type` varchar(25) character set utf8 NOT NULL, 
`Size` varchar(25) character set utf8 NOT NULL, 
`Picture` mediumblob NOT NULL, 
PRIMARY KEY (`Id`) 
) ENGINE=InnoDB; 

PHP代碼富人以下結構

Repostory
- 服務
- - Image.php

public static function GetPictureById($id) 
{ 
    global $db; 
    $d = $GLOBALS["db"]; 
    $result = $d->prepare("SELECT * FROM Pictures WHERE id = :id"); 
    $result->bindParam(":id", $id, PDO::PARAM_STR, 36); 

    if($result->execute() !== true) 
    { 
     Pre($result->errorInfo()); 
     return; 
    } 

    $result->bindColumn("Id", $id); 
    $result->bindColumn("Type", $type); 
    $result->bindColumn("Size", $size); 
    $result->bindColumn("Picture", $picture, PDO::PARAM_LOB); 
    while($result->fetch(PDO::FETCH_BOUND)) 
    { 
     $pic = new Picture(); 
     $pic->SetId($id); 
     $pic->SetType($type); 
     $pic->SetSize($size); 
     $pic->SetPicture($picture); 
    } 

    return $pic; 
} 

服務

public static function GetPictureById($id) 
{ 
    return PictureRepository::GetPictureById($id); 
} 

Image.php

error_reporting(E_ALL); 
$root = $_SERVER["DOCUMENT_ROOT"]."/new";   
include_once($root . "/Config/Config.php");  
$picture = PictureRepository::GetPictureById($_GET["id"]); 
header("Content-type:". $picture->GetType()); 
echo $picture->GetPicture(); 

不幸1E示出了帶有紅色叉的塊和Firefox告訴圖像包含錯誤

誰看到溶液?

回答

0

問題是您使用echo

echo用於打印字符串。您需要將二進制數據寫入STDOUT流。

爲此,您需要使用fwrite

喜歡的東西:

fwrite(STDOUT,$picture->GetPicture()); 
+1

此答案實際上不正確。 'echo'毫無疑問地發出二進制數據。 – Charles 2011-05-06 20:46:53

0

下載圖像(右鍵單擊/另存爲),然後在文本編輯器加載它,看看是否有任何PHP警告/錯誤的文件的開頭。你有錯誤報告的E_ALL,所以腳本中任何地方的單個語法奇怪會吐出警告並破壞數據流。

+0

texteditor顯示一個空文件,但如果id註釋phpfile中的標題,我看到一個不可讀的文本。它看起來像一個二進制文件 – user558163 2011-05-06 19:43:18

+0

一個簡單的檢查就是將下載的文件大小與文件大小上載到數據庫之前的大小進行比較。它們應該是相同的。 – 2011-05-06 20:00:24

+0

嗨馬克感謝您的幫助。當我試圖(右鍵單擊/另存爲)時,我只能看到'show image'(類似的東西)。我的瀏覽器是荷蘭語 – user558163 2011-05-06 20:09:57

相關問題