PHP上传文件,存储进数据库教程 (php上传文件如何保存到数据库)
随着互联网的发展,文件上传已成为现代网络应用程序的重要组成部分。许多网站都允许用户上传和下载文件,例如图片、音频、视频以及文档等。在本文中,我们将介绍如何使用PHP上传文件并将其存储在数据库中。这个教程将涉及到PHP的基础知识,以及使用MySQL数据库进行存储的方法。
一、PHP上传文件
我们需要使用PHP的函数来实现文件上传。下面是一个简单的PHP脚本,用于上传文件。其中,包括了文件上传表单、文件上传路径、文件名以及上传后的目标路径的定义。接下来,请按照以下步骤操作。
1. 在新建PHP文件内,使用以下代码创建文件上传表单。
“`
File Upload Form
“`
2. 为了将文件上传到服务器,我们需要使用PHP的move_uploaded_file()函数将文件从临时目录移动到目标路径中。在新建PHP文件内,使用以下代码定义上传路径、修复中文文件名并保存临时文件:
“`
if($_FILES[‘fileUpload’][‘error’] == 0){
$tempFilePath = $_FILES[‘fileUpload’][‘tmp_name’];
$fileName = $_FILES[‘fileUpload’][‘name’];
$fileInfo = pathinfo($fileName);
$extension = $fileInfo[‘extension’];
$newFileName = uniqid().’.’.$extension;
$targetPath = ‘uploads/’.$newFileName;
move_uploaded_file($tempFilePath,$targetPath);
}
?>
“`
在上述代码中,temp_name为临时文件所在路径,name为用户上传的文件名,用pathinfo()函数获取到文件后缀,并使用uniqid()函数生成一个唯一的文件名。最终,使用move_uploaded_file()函数将文件从临时目录移动到目标路径中。请注意,上传路径’uploads/’需要先创建一个未存在的目录。
二、PHP代码连接数据库
在PHP的代码中,可以使用MySQLi或PDO等扩展库连接MySQL数据库。在本文中,我们将使用MySQLi扩展库。下面的PHP代码片段中,我们将对MySQL数据库进行插入操作。请在创建PHP文件upload.php后,将以下代码复制到文件中。
1. 定义数据库访问的基本信息。
“`
$host = ‘localhost’;
$user = ‘root’;
$password = ”;
$dbname = ‘test’;
$conn = new mysqli($host,$user,$password,$dbname);
if($conn->connect_error){
die(‘Database connection fled:’.$conn->connect_error);
}
“`
在上述代码中,我们定义了连接数据库的基本信息和连接对象,如mysql所在的主机、用户名、密码、数据库名和连接对象。如果连接失败,我们将生成一个错误信息并关闭连接。
2. 设定数据表,将文件数据存入数据表。
在接下来的代码中,我们要将文件信息存储到数据库中。在此之前,我们需要先定义一个数据表,用于存放文件信息。下面是一个简单的MySQL数据表定义方式:
“`
CREATE TABLE files(
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
file_name VARCHAR(50),
file_path VARCHAR(200),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
“`
上述代码中,我们定义了一个名为“files”的表,包括“id”(自动增量),“file_name”(文件名),“file_path”(文件路径)以及“created_at”(创建时间)等字段。
将文件存储到数据库中的代码如下:
“`
if($_FILES[‘fileUpload’][‘error’] == 0){
$tempFilePath = $_FILES[‘fileUpload’][‘tmp_name’];
$fileName = $_FILES[‘fileUpload’][‘name’];
$fileInfo = pathinfo($fileName);
$extension = $fileInfo[‘extension’];
$newFileName = uniqid().’.’.$extension;
$targetPath = ‘uploads/’.$newFileName;
move_uploaded_file($tempFilePath,$targetPath);
$sql = “INSERT INTO files(file_name,file_path) VALUES(‘{$fileName}’,'{$targetPath}’)”;
if($conn->query($sql) === TRUE){
echo “File uploaded and saved in database!”;
}else{
echo “Error!!!”;
}
}
“`
在上述代码中,我们向“files”表中插入“文件名”和“文件路径”两个数据。如果插入成功,我们将输出“File uploaded and saved in database!”的消息,否则将显示错误信息“Error!!!”。
三、完整示例代码
“`
File Upload Form
$host = ‘localhost’;
$user = ‘root’;
$password = ”;
$dbname = ‘test’;
$conn = new mysqli($host,$user,$password,$dbname);
if($conn->connect_error){
die(‘Database connection fled:’.$conn->connect_error);
}
if($_FILES[‘fileUpload’][‘error’] == 0){
$tempFilePath = $_FILES[‘fileUpload’][‘tmp_name’];
$fileName = $_FILES[‘fileUpload’][‘name’];
$fileInfo = pathinfo($fileName);
$extension = $fileInfo[‘extension’];
$newFileName = uniqid().’.’.$extension;
$targetPath = ‘uploads/’.$newFileName;
move_uploaded_file($tempFilePath,$targetPath);
$sql = “INSERT INTO files(file_name,file_path) VALUES(‘{$fileName}’,'{$targetPath}’)”;
if($conn->query($sql) === TRUE){
echo “File uploaded and saved in database!”;
}else{
echo “Error!!!”;
}
}
?>
“`
本文介绍了如何使用PHP将文件上传和存储在数据库中。通过使用以上代码和MySQLi扩展库,我们可以轻松地实现在网站上上传和存储用户文件的功能。
在实际项目中,为了大幅减少上传文件的风险,请注意以下几点:
1. 限制上传文件的大小和类型,并验证上传文件的后缀名和MIME类型。
2. 创建一个专用的目录用于存储上传文件,并限制该目录的写权限,以提高安全性。
3. 使用服务器端脚本维护上传的文件,并检查缺少的安全性。
以上熟练掌握后,上传文件对您来说将不再是难题。