如何从保存为 longblob 文件的 sql 数据库中添加图片作为背景图像属性?

Posted

技术标签:

【中文标题】如何从保存为 longblob 文件的 sql 数据库中添加图片作为背景图像属性?【英文标题】:How do I add a picture as a background-image property from sql databese which is saved as a longblob file? 【发布时间】:2021-01-22 05:44:53 【问题描述】:

我已经使用 phphtml 和 css 创建了一个身份验证系统。我使用下面的代码将与每个配置文件相关的配置文件图片作为 longblob 文件发送到 sql 数据库。

<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="POST" enctype="multipart/form-data">
    <input type="file" name="profile_picture" id=""><br>
    <input type="submit" value="Update" name="profile_pic_update">
</form>
<?php
if($_SERVER["REQUEST_METHOD"]=="POST" && isset($_REQUEST["profile_pic_update"]))
     try
         $pdo = new PDO("mysql:host=localhost;dbname=shoppingcart","root","");
         $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     catch(PDOException $e)
         die("Error");
          

     $profile_picture_name = $_FILES["profile_picture"]["name"];
     $profile_picture_type = $_FILES["profile_picture"]["type"];
     $profile_picture_data = file_get_contents($_FILES["profile_picture"]["tmp_name"]);
     $sql = "INSERT INTO `profilepictures`(`name`, `mime`, `data`, `ownerId`) VALUES ($profile_picture_name,$profile_picture_type,$profile_picture_data, $_SESSION['id'])";
     $stmt = $pdo->prepare($sql);
     $stmt->execute();

?>

我可以使用此代码从 sql 数据库获取图像到 img 属性,

<?php
     $sql2 = "SELECT * FROM profilepictures WHERE ownerid=:ownerid";
     if($stmt2 = $pdo->prepare($sql2))
          $stmt2->bindParam(":ownerid",$_SESSION["id"]);
          $stmt2->execute();
          if($stmt2->rowCount()==1)
               $row = $stmt2->fetch();
               echo "<img src='data:".$row['mime'].";base64,".base64_encode($row['data'])."'>";
          
     
?>

但问题是我需要将此图像作为 css 的背景图像属性。我有一个调整大小的 div 标签,我需要该图像作为此 div 标签的背景图像。 如果我简单地说,我需要像下面这样使用它,

<div class="profilePicture" style="background-image: url();">
</div>

如何将图像作为 url 添加到该背景图像?

【问题讨论】:

简单使用数据:`url("data:image/png;base64,YOUR_BASE_64_CODE_HERE") 【参考方案1】:

你可以像 img 标签那样做:

<div class="profilePicture" style="background-image: url('<?= "data:" . $row['mime'] . ";base64," . base64_encode($row['data']); ?>');">
</div>

【讨论】:

以上是关于如何从保存为 longblob 文件的 sql 数据库中添加图片作为背景图像属性?的主要内容,如果未能解决你的问题,请参考以下文章

android怎么将图片传送到服务器,然后将图片保存在mysql数据库中?

max_allowed_packet与longblob限制

SQL...如何将表查询的结果自动保存到*.txt文件中?

SQL...如何将表查询的结果自动保存到*.txt文件中?

将 MS SQL Server 图像数据移动到 MySQL longblob

mysql中的longblob对应java中的啥类型