現象:直接 `echo $row['image']` 輸出亂碼 (二進位被當文字顯示)。
prepare("SELECT image_data, mime_type FROM images WHERE id = ?");
$stmt->execute([$id]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$row) { http_response_code(404); exit; }
// 關鍵:送正確 MIME
header('Content-Type: ' . $row['mime_type']); // 如 image/jpeg
header('Content-Length: ' . strlen($row['image_data']));
// 可選快取
header('Cache-Control: public, max-age=31536000');
header('ETag: "' . md5($row['image_data']) . '"');
echo $row['image_data']; // 直接輸出二進位
exit; // 確保無額外輸出
?>
核心口訣:**查詢 → `header('Content-Type: image/...')` → `echo $blob` → `exit`,中間絕無多餘字元**,瀏覽器即可正確渲染資料庫圖片。