php如何上传图片并保存到数据库

avatar
作者
筋斗云
阅读量:0

要上传图片并保存到数据库,需要先创建一个表来存储图片的相关信息,包括图片的文件名、文件类型、文件大小等。然后使用PHP的文件上传功能将图片上传到服务器,并将上传的图片信息保存到数据库中。

以下是一个简单的示例代码:

  1. 创建一个名为images的数据库表,包括id(自增主键)、filenamefiletypefilesize字段。
CREATE TABLE images ( id INT AUTO_INCREMENT PRIMARY KEY, filename VARCHAR(255), filetype VARCHAR(255), filesize INT ); 
  1. 创建一个包含文件上传表单的HTML页面。
<form action="upload.php" method="POST" enctype="multipart/form-data"> <input type="file" name="image"> <input type="submit" name="submit" value="上传"> </form> 
  1. 创建一个名为upload.php的PHP文件,用于处理文件上传和保存到数据库的逻辑。
<?php // 连接数据库 $servername = "localhost"; $username = "root"; $password = ""; $dbname = "your_database"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("数据库连接失败: " . $conn->connect_error); } // 处理文件上传 if ($_SERVER["REQUEST_METHOD"] == "POST") { $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["image"]["name"]); $uploadOk = 1; $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION)); // 检查图片文件是否为真实的图片 if(isset($_POST["submit"])) { $check = getimagesize($_FILES["image"]["tmp_name"]); if($check !== false) { echo "文件是一个图片 - " . $check["mime"] . "."; $uploadOk = 1; } else { echo "文件不是一个图片."; $uploadOk = 0; } } // 检查文件是否已存在 if (file_exists($target_file)) { echo "文件已存在."; $uploadOk = 0; } // 检查文件大小 if ($_FILES["image"]["size"] > 500000) { echo "文件太大."; $uploadOk = 0; } // 允许特定的文件格式 if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) { echo "只允许JPG, JPEG, PNG 和 GIF文件."; $uploadOk = 0; } // 检查是否有错误发生 if ($uploadOk == 0) { echo "上传失败."; } else { // 上传文件 if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) { echo "文件上传成功."; // 将图片信息保存到数据库 $filename = basename($_FILES["image"]["name"]); $filetype = $_FILES["image"]["type"]; $filesize = $_FILES["image"]["size"]; $sql = "INSERT INTO images (filename, filetype, filesize) VALUES ('$filename', '$filetype', '$filesize')"; if ($conn->query($sql) === TRUE) { echo "图片信息保存成功."; } else { echo "Error: " . $sql . " " . $conn->error; } } else { echo "文件上传失败."; } } } $conn->close(); ?> 

这样,当用户选择并上传图片后,图片将会被保存到服务器的uploads/文件夹下,并将图片的相关信息保存到images表中。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!