在这个数字化时代,文件存储与分享已成为日常需求。本文将带你一步步用PHP搭建一个简易的在线文件存储系统,助你轻松管理文件。
项目准备
首先,确保你的开发环境已安装以下工具:
- PHP:用于后端逻辑处理。
- MySQL:用于存储文件信息。
- Apache/Nginx:作为Web服务器。
此外,你还需要一个文本编辑器(如VSCode)来编写代码。
数据库设计
我们使用MySQL来存储文件信息。创建一个名为file_storage
的数据库,并添加一个files
表:
CREATE DATABASE file_storage;
USE file_storage;
CREATE TABLE files (
id INT AUTO_INCREMENT PRIMARY KEY,
filename VARCHAR(255) NOT NULL,
filepath VARCHAR(255) NOT NULL,
upload_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
这个表将存储文件的ID、文件名、文件路径和上传日期。
后端实现
文件上传
创建一个PHP文件upload.php
,用于处理文件上传:
<?php
// 连接数据库
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "file_storage";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$filename = $_FILES['file']['name'];
$tempname = $_FILES['file']['tmp_name'];
$folder = "uploads/" . $filename;
// 将文件移动到指定目录
if (move_uploaded_file($tempname, $folder)) {
$sql = "INSERT INTO files (filename, filepath) VALUES ('$filename', '$folder')";
if ($conn->query($sql) === TRUE) {
echo "File uploaded successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
} else {
echo "Failed to upload file";
}
}
$conn->close();
?>
文件列表展示
创建一个PHP文件index.php
,用于展示已上传的文件列表:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "file_storage";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, filename, upload_date FROM files";
$result = $conn->query($sql);
?>
<!DOCTYPE html>
<html>
<head>
<title>File Storage</title>
</head>
<body>
<h1>Uploaded Files</h1>
<table border="1">
<tr>
<th>ID</th>
<th>Filename</th>
<th>Upload Date</th>
<th>Download</th>
</tr>
<?php
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['filename'] . "</td>";
echo "<td>" . $row['upload_date'] . "</td>";
echo "<td><a href='" . $row['filepath'] . "'>Download</a></td>";
echo "</tr>";
}
} else {
echo "<tr><td colspan='4'>No files found</td></tr>";
}
?>
</table>
<h2>Upload New File</h2>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" required>
<input type="submit" value="Upload">
</form>
</body>
</html>
<?php
$conn->close();
?>
前端界面
在index.php
中,我们已经包含了一个简单的HTML表单用于文件上传,以及一个表格用于展示已上传的文件。你可以根据需要进一步美化界面。
安全性考虑
在实际应用中,需注意以下安全措施:
- 文件类型检查:防止上传恶意文件。
- 文件大小限制:避免服务器资源耗尽。
- 防止SQL注入:使用预处理语句。
总结
通过以上步骤,你已成功搭建了一个简易的在线文件存储系统。虽然功能简单,但足以应对日常文件管理需求。在此基础上,你可以继续扩展功能,如用户认证、文件加密等,打造更完善的文件存储解决方案。
希望这篇文章能激发你的创作灵感,动手试试吧!
评论(0)