【问题标题】:BLOB images not displaying fullyBLOB 图像未完全显示
【发布时间】:2015-06-27 11:30:33
【问题描述】:

从我的数据库中检索 BLOB 图像时,它只渲染大约 1/5 的图像并停止。

例子:

fetchavatar.php - 从数据库中检索图像。

// Start session.
session_start();

$id = $_SESSION['id'];

$stmt = $con->prepare("SELECT * FROM avatars WHERE user_id = ?");
$stmt->bindParam(1, $id);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);

$fetchedrows = $stmt->rowCount();

$_SESSION['avatar'] = base64_encode($result['data']);

$avatar = "<img src='data:image/jpeg;base64,". $_SESSION['avatar'] . "'>";

upload.php - 将图片插入数据库。

include "fetchavatar.php";

$name = $_FILES['avatar']['name'];
$temp = $_FILES['avatar']['tmp_name'];
$size = $_FILES['avatar']['size'];
$type = $_FILES['avatar']['type'];

$fp = fopen($temp, 'r');
$img = fread($fp, filesize($temp));

fclose($fp);

if($fetchedrows) {
  $stmt = $con->prepare("UPDATE avatars SET name = ?, type = ?, size = ?, data = ? WHERE user_id = ?;");
} else {
  $stmt = $con->prepare("INSERT into avatars (name, type, size, data, user_id) VALUES(?, ?, ?, ?, ?);");
}

$stmt->bindParam(1, $name);
$stmt->bindParam(2, $type);
$stmt->bindParam(3, $size);
$stmt->bindParam(4, $img);
$stmt->bindParam(5, $id);
$stmt->execute();

profile.php - 显示个人资料页面。

<html>

...

<?php include "fetchavatar.php"; ?>

...

<body>
 <div id="profile_div">
 <h1>Profile Page</h1>

  <?php echo $avatar ?>

...

</body>
</html>

【问题讨论】:

  • 用long blob数据类型怎么样?
  • 哈哈,就这么简单……干得好。谢谢!
  • 没问题.. 我会发布我的答案.. =) 很高兴帮助你..

标签: php mysql image blob


【解决方案1】:

将您的数据类型从 blob 更改为 longblob.. =)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多