PHP上传文件,存储进数据库教程 (php上传文件如何保存到数据库)

随着互联网的发展,文件上传已成为现代网络应用程序的重要组成部分。许多网站都允许用户上传和下载文件,例如图片、音频、视频以及文档等。在本文中,我们将介绍如何使用PHP上传文件并将其存储在数据库中。这个教程将涉及到PHP的基础知识,以及使用MySQL数据库进行存储的方法。

一、PHP上传文件

我们需要使用PHP的函数来实现文件上传。下面是一个简单的PHP脚本,用于上传文件。其中,包括了文件上传表单、文件上传路径、文件名以及上传后的目标路径的定义。接下来,请按照以下步骤操作。

1. 在新建PHP文件内,使用以下代码创建文件上传表单。

“`

File Upload Form

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

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. 使用服务器端脚本维护上传的文件,并检查缺少的安全性。

以上熟练掌握后,上传文件对您来说将不再是难题。


数据运维技术 » PHP上传文件,存储进数据库教程 (php上传文件如何保存到数据库)