php上传文件存进数据库 (如何在PHP中将文件上传到数据库?)

在许多web应用程序中,用户上传文件是一个基本功能。通常情况下,这些文件会被存储在服务器上的某个目录中。然而,有时候我们需要将文件存储在数据库中,比如为了便于管理和备份。在本文中,我们将学习如何在PHP中将文件上传到数据库中。

  1. HTML表单

首先,我们需要一个HTML表单,允许用户上传文件。以下是一个简单的表单:

html
<!DOCTYPE html>
<html>
<head>
<title>PHP Upload to Database</title>
</head>
<body>
<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" name="submit" value="Upload">
</form>
</body>
</html>

这个表单只包含一个“file”类型的输入,允许用户选择要上传的文件,以及一个提交按钮。重要的是将“enctype”属性设置为“multipart/form-data”,以确保可以上传任意类型的文件。

  1. PHP文件上传

当用户提交表单时,我们需要编写一个PHP脚本来上传文件并将其存储在数据库中。以下是一个简单的PHP脚本,实现了这个功能:

“`php
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// 创建数据库连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接是否成功
if ($conn->connecterror) {
die(“连接失败: ” . $conn->connect
error);
}

// 获取上传的文件信息
$filename = $FILES[‘file’][‘name’];
$filesize = $FILES[‘file’][‘size’];
$filetype = $FILES[‘file’][‘type’];
$filecontent = filegetcontents($FILES[‘file’][‘tmp_name’]);

// 定义SQL语句
$sql = “INSERT INTO files (name, size, type, content) VALUES (‘$filename’, ‘$filesize’, ‘$filetype’, ‘$filecontent’)”;

// 执行SQL语句
if ($conn->query($sql) === TRUE) {
echo “文件上传成功”;
} else {
echo “Error: ” . $sql . “
” . $conn->error;
}

// 断开数据库连接
$conn->close();
?>
“`

这段代码首先连接到数据库,然后获取上传的文件信息,包括文件名、大小、类型和内容。接下来,使用SQL语句将这些信息插入到数据库中。最后,关闭数据库连接。

  1. 数据库表结构

在上面的代码中,我们将文件存储在一个名为“files”的数据表中。下面是这个表的结构:

sql
CREATE TABLE files (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
size INT(11) NOT NULL,
type VARCHAR(30) NOT NULL,
content MEDIUMBLOB NOT NULL
)

这个表包含五个字段:id(自动递增)、名称、大小、类型和内容。文件内容存储在MEDIUMBLOB字段中。

  1. 下载文件

最后,我们需要编写PHP脚本来下载存储在数据库中的文件。以下是这个脚本:

“`php
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// 创建数据库连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接是否成功
if ($conn->connecterror) {
die(“连接失败: ” . $conn->connect
error);
}

// 获取文件id
$fileid = $GET[‘id’];

// 从数据库中检索文件
$sql = “SELECT * FROM files WHERE id=’$fileid'”;
$result = $conn->query($sql);
$row = $result->fetch
assoc();

// 设置文件头以便浏览器下载文件
header(“Content-Type: ” . $row[‘type’]);
header(“Content-Length: ” . $row[‘size’]);
header(“Content-Disposition: attachment; filename=” . $row[‘name’]);

// 输出文件内容
echo $row[‘content’];

// 断开数据库连接
$conn->close();
?>
“`

这个脚本首先连接到数据库,然后检索指定id的文件。接下来,设置适当的文件头,以便浏览器可以下载文件。最后,输出文件内容并关闭数据库连接。

总结

在本文中,我们学习了如何在PHP中上传文件并将其存储在数据库中。要实现这个功能,我们需要一个HTML表单、一个PHP脚本和一个数据库表。最后,我们还学习了如何下载存储在数据库中的文件。

如有侵犯您的权益请邮件发送:rainpro@foxmail.com,站长看到会第一时间处理
客栈猫 » php上传文件存进数据库 (如何在PHP中将文件上传到数据库?)

提供最优质的资源集合

立即查看 了解详情