php上传文件如何保存到数据库 (如何在PHP中将上传的文件保存到数据库中?)
在网站开发中,文件上传是很常见的需求。而将上传的文件保存到数据库中,比一般的保存到服务器中更为优秀,因为可以更好地控制文件的访问权限、备份和还原。本文将介绍如何通过PHP将上传的文件保存到数据库中。
首先需要明确的是,上传的文件在PHP中以$_FILES
数组的形式存在,包含了上传文件的相关信息,比如文件名、文件类型、文件大小等。
接下来,我们需要创建一个表来保存上传的文件。例如,我们可以创建一个文件表,里面包含文件的ID、文件名、上传时间、文件类型以及二进制内容等字段。
CREATE TABLE files (
id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
created_at DATETIME NOT NULL,
type VARCHAR(255) NOT NULL,
content LONGBLOB NOT NULL
);
在上传文件时,我们需要通过move_uploaded_file()
函数将文件移动到服务器上的某个临时目录,以获得文件的二进制内容。然后,我们可以使用file_get_contents()
函数读取文件二进制内容,并将其存储到数据库中。
下面是一个简单的PHP代码示例:
“`
// 获取上传的文件内容
$fileContent = filegetcontents($FILES[‘file’][‘tmpname’]);
// 连接数据库
$pdo = new PDO(‘mysql:host=localhost;dbname=mydb;charset=utf8’, ‘username’, ‘password’);
// 准备插入数据的SQL语句
$stmt = $pdo->prepare(‘INSERT INTO files (name, created_at, type, content) VALUES (?, ?, ?, ?)’);
// 绑定参数并执行插入操作
$stmt->bindParam(1, $FILES[‘file’][‘name’]);
$stmt->bindParam(2, date(‘Y-m-d H:i:s’));
$stmt->bindParam(3, $FILES[‘file’][‘type’]);
$stmt->bindParam(4, $fileContent, PDO::PARAM_LOB);
$stmt->execute();
“`
在这个示例中,我们首先获取上传文件的二进制内容,然后使用PDO连接到数据库。接下来,我们准备一个插入数据的SQL语句,并通过bindParam()
函数绑定各个参数的值。注意,在绑定二进制内容时,需要指定第四个参数为PDO::PARAM_LOB
。最后,我们执行execute()
函数来执行插入操作。
总结一下,将上传的文件保存到数据库中需要进行以下步骤:
- 创建一个包含文件ID、文件名、上传时间、文件类型以及二进制内容等字段的表。
- 使用
move_uploaded_file()
函数将上传的文件移动到服务器上的临时目录。 - 使用
file_get_contents()
函数读取文件二进制内容。 - 使用PDO连接数据库,并准备插入数据的SQL语句。
- 绑定各个参数的值,并执行插入操作。
通过上面这些步骤,我们就可以将上传的文件保存到数据库中了。同时,我们也可以使用类似的方法从数据库中获取文件并在网页中展示。