我正在構建一個簡單的網站,我想讓用戶上傳並更改他們的頭像。目前我已經能夠上傳圖片到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'];
}
我不確定如果我試圖以正確的方式來顯示圖像,任何幫助(更正/替代解決方案)將不勝感激:)
你在做什麼是非常不安全的! 'addslashes()'不足以防止SQL注入攻擊和問題。使用PDO或類似的準備好的查詢來避免這個問題。 – Brad
不要在DB上存儲圖像,圖像應該在文件系統上。將記錄插入上傳圖像(用戶信息)的數據庫中,並使用該信息存儲/顯示圖像。 – dakdad
我不同意。保持圖像在數據庫中沒有任何問題。這實際上非常有用。顯然你必須將它們緩存在文件系統中。 –