2012-09-30 108 views
0

我正在構建一個簡單的網站,我想讓用戶上傳並更改他們的頭像。目前我已經能夠上傳圖片到MySQL數據庫,存儲與代碼斑點如下:努力用php顯示blob圖像

//connected to DB, userID fetched 

$image = $FILES['fileToUpload']['tmp_name']; 
$fp = fopen($image, 'r'); 
$content = fread($fp, filesize($image)); 
$content = addslashes($content); 
fclose($fp); 

$sql = "UPDATE tbUsers SET profileImage = '".$content."' WHERE userID = ".userID; 
$result = mysql_query($sql) or die (mysql_error()); 

當我上傳將它們保存爲.bin文件後,從phpMyAdmin的下載文件,但可以正常瀏覽。我不確定這是否正確。 我的代碼來顯示圖像如下:

HTML:

<?php echo '<img src ="showPic.php?q='.$_SESSION['profile'].'"/>'; ?> 

PHP:

if (!empty($_GET['profile']) && is_numeric($_GET['profile'])) 
{ 
    $con = mysql_connect("localhost", "root", ""); 
    $mysql_select_db("projectDB"); 
    $sql = "SELECT profileImage FROM tbUsers WHERE userID = ". $_GET['profile']; 
    $result = mysql_query($sql) or die (mysql_error()); 

    header('Content-type: image/jpeg'); 
    $row = mysql_fetch_object($result); 
    echo $row['image_data']; 
} 

我不確定如果我試圖以正確的方式來顯示圖像,任何幫助(更正/替代解決方案)將不勝感激:)

+1

你在做什麼是非常不安全的! 'addslashes()'不足以防止SQL注入攻擊和問題。使用PDO或類似的準備好的查詢來避免這個問題。 – Brad

+1

不要在DB上存儲圖像,圖像應該在文件系統上。將記錄插入上傳圖像(用戶信息)的數據庫中,並使用該信息存儲/顯示圖像。 – dakdad

+0

我不同意。保持圖像在數據庫中沒有任何問題。這實際上非常有用。顯然你必須將它們緩存在文件系統中。 –

回答

0

您選擇這個

$sql = "SELECT profileImage FROM tbUsers WHERE userID = ". $_GET['profile']; 

,並指未選定列

echo $row['image_data']; 
+1

另外,他用mysql_fetch_object表示它返回的對象不是數組。 – GBD

1

你可以這樣做:

if (!empty($_GET['profile']) && is_numeric($_GET['profile'])) 
{ 
    $con = mysql_connect("localhost", "root", ""); 
    $mysql_select_db("projectDB"); 
    $sql = "SELECT profileImage FROM tbUsers WHERE userID = ". $_GET['profile']; 
    $result = mysql_query($sql) or die (mysql_error()); 

    $content = mysql_result($result,0,"file_content"); 
    $name = mysql_result($result,0,"file_name"); 
    $type = mysql_result($result,0,"file_type"); 
    $size = mysql_result($result,0,"file_size"); 
    header("Content-type: $type"); 

    echo $content 

} 

注:在您保存您BLOB數據你應該有你的表,這些列

file_name =保存文件名

$_FILES['file']['name'] 

FILE_TYPE =用於保存文件類型

$_FILES['file']['type'] 

FILE_SIZE =用於保存文件的大小

$_FILES['file']['size']