「数据库存图」技能get!极简教程让你速学怎样存储图片 (怎样把图片存入数据库)
数据库存图技能get!极简教程让你速学怎样存储图片
在现代化的网络开发之中,图片的上传和存储已成为功能的必须点之一。无论是一个社交媒体网站还是一家电商平台,图片上传、管理和展示都是关键的功能之一,但是如何在后端存储图片却是一项比较费神的技巧。在这篇文章中,我们将学习如何通过数据库存储图片,从而达到方便管理、一致性、并且易于备份的目的。
1.数据库存储图片的原理
当用户上传图片时,图片的二进制内容被压缩成流格式,然后通过HTTP表单发送到服务器,分解成文件名和文件内容。在传统的Web开发模式中,这些图片最终都会被保存在本地服务器的磁盘上并进行管理。但是,当您开发的Web应用程序需要满足跨多个数据中心的需求时,存储在一个地方的二进制大型文件可能会很快成为一个问题,而这时候数据库存储图片就派上用场了。
数据库存储图片的原理很直观:将图片存储在数据库中的二进制blob字段中,这种方式将图片的二进制内容存储在一个二级文件系统中。与存储在硬盘上不同,数据库存储的图像是与数据一起存储的,因此数据被存储在相同的地方,使得数据的维护和管理更加便捷。
2. 连接数据库
我们将连接到MySQL数据库并创建一个名为“image_store”的新数据库。以下是如何连接数据库的代码示例:
“`php
$servername = “localhost”;
$username = “root”;
$password = “”;
$dbname = “image_store”;
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die(“Connection fled: ” . $conn->connect_error);
}
echo “Connected successfully”;
“`
连接成功后,我们可以执行以下语句创建一个名为“images”的新表来存储图片。
“`sql
CREATE TABLE images(
id INT AUTO_INCREMENT PRIMARY KEY,
image BLOB,
image_name VARCHAR(255)
);
“`
3. 上传图片并将其保存到数据库
以下是上传图片并将其保存到数据库的代码示例:
“`php
if(isset($_FILES[‘image’])){
$image_name = $_FILES[‘image’][‘name’];
$image = addslashes(file_get_contents($_FILES[‘image’][‘tmp_name’]));
$sql = “INSERT INTO images (image, image_name) VALUES (‘$image’, ‘$image_name’)”;
if ($conn->query($sql) === TRUE) {
echo “New record created successfully”;
} else {
echo “Error: ” . $sql . “
” . $conn->error;
}
}
“`
此段代码首先验证用户是否上传了图像,然后获取文件名和blob数据。我们使用“addslashes()”将二进制数据转换为字符串,然后将其插入到数据库表中。
4. 从数据库中检索图像并在页面上呈现
以下是从数据库中检索图像并在页面上呈现的代码示例:
“`php
$sql = “SELECT * FROM images”;
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo ““;
}
} else {
echo “0 results”;
}
“`
此段代码执行一个SQL查询,并从结果集中构建了一个包含所有图像的循环。对于每个图像,使用base64编码将图像数据转换为字符串形式,然后使用元素在html上呈现出来。
在本教程中,我们介绍了如何使用PHP将图像存储在MySQL数据库中。连接数据库、创建表,上传图像和将其解码然后在已经上传的图像中呈现并没有什么可吓人的。然而,学习如何存储和管理图像,能够加速至关重要的Web开发过程。我们希望这篇文章能够帮助你掌握存储图片的技巧,并在你的下一个Web应用程序中实现保存图像数据的功能。