求助:无法从数据库Blob类型获取签名并在HTML页面显示
问题分析与修复方案
你的代码存在两个关键问题,导致签名无法在页面显示:
- img标签的src属性不完整:你只写了data URI的前缀,没有把编码后的base64数据拼接进去,浏览器无法识别完整的图片数据。
- 可能存在重复编码问题:如果数据库中存储的
signature已经是base64编码后的字符串,再次调用base64_encode()会导致数据错误,图片无法解析。
修复后的代码
<?php include('config.php'); $sql = "SELECT signature FROM details WHERE id = ?"; $stmt = $pdo->prepare($sql); $id = "116"; // Replace with the ID of the signature data to retrieve $stmt->bindParam(1, $id, PDO::PARAM_INT); $stmt->execute(); // Fetch the result and return the base64-encoded signature data $result = $stmt->fetch(PDO::FETCH_ASSOC); if ($result) { $signatureData = $result['signature']; // 注意:如果数据库中存储的是base64字符串,直接用$signatureData即可,无需再次编码 $base64Data = base64_encode($signatureData); // 拼接完整的img标签 $img = '<img src="data:image/png;base64,' . $base64Data . '">'; echo $img; } else { echo "No signature data found for ID $id"; } ?>
额外检查项
- 确认数据库中
signature字段存储的是PNG图片的原始二进制数据;如果之前存储的是base64字符串,删除base64_encode()这一行,直接使用$signatureData拼接src。 - 可以打开浏览器开发者工具,查看img标签的src属性,确认数据是否完整、格式是否正确。
内容的提问来源于stack exchange,提问作者Taimur Hadi
相关产品推荐
相关产品推荐

