有在我的MySQL數據庫的顯示圖像的大時間問題店面形象到MySQL數據庫和PHP和顯示
我將其存儲在一個LONGBLOB類型
顯示圖像時,我收到了破碎圖像圖標
這裏是代碼,用於存儲圖像
if(isset($_FILES['image']) && $_FILES['image']['size'] > 0 && isset($_POST['photoName']))
{
//temporary file name
// Temporary file name stored on the server
$tmpName = $_FILES['image']['tmp_name'];
$imageType = $_FILES['image']['type'];
// Read the file
$fp = fopen($tmpName, 'r');
$data = fread($fp, filesize($tmpName));
$data = addslashes($data);
fclose($fp);
$sql="INSERT INTO photos (photoName, caption, photoData, photoType, userName)
VALUES
('$_POST[photoName]','$_POST[caption]','$tmpName','$imageType', '$currentUser')";
//For debugging purposes
if(!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
else
{
echo "Your Image has been Added";
}
}
然後打印圖像
if(isset($_POST['usersImage'])){
//code to show images
$user = $_POST['usersImage'];
$sql = "SELECT * FROM `photos` WHERE userName = '$user'";
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result))
{
switch ($row['photoType']) {
case 'image/jpeg':
echo "<tr>";
echo '<img src="data:image/jpeg;base64,'. base64_encode($row['photoData'])."\"></td>";
echo "</tr>";
//echo '<img src="image>' .$row['photoData']. '.jpeg'.'</p>';
//echo '<p id="caption">'.$row['caption'].' </p>';
break;
}
}
}
,你可以看到我的最新嘗試是使用base64編碼打印出來的圖像 我以前嘗試被註釋掉的代碼
我試過這個解決方案,仍然給我一個破碎的圖像圖標 – user1050632 2013-03-16 17:51:15
以及試着去你的瀏覽器中的網址。如果這不起作用,那麼你做錯了什麼,你肯定會得到一個破碎的IMG圖標。 – 2013-03-16 17:52:24
像M.K Price的答案,你必須使用'addslashes'來將二進制數據插入到數據庫中。 – 2013-03-16 17:53:55