在这个信息爆炸的时代,文件共享已成为日常工作和生活中不可或缺的一部分。本文将带你一步步用PHP搭建一个简易的在线文件共享系统,让你轻松实现文件的上传与下载。
项目准备
首先,确保你的开发环境已安装以下工具:
- PHP:用于后端逻辑处理。
- MySQL:用于存储文件信息。
- Apache/Nginx:作为Web服务器。
此外,你还需要一个文本编辑器(如VSCode)来编写代码。
数据库设计
为了管理文件信息,我们需要一个简单的数据库表。以下是创建表的SQL语句:
CREATE TABLE files (
id INT AUTO_INCREMENT PRIMARY KEY,
filename VARCHAR(255) NOT NULL,
filepath VARCHAR(255) NOT NULL,
upload_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
这个表包含四个字段:id
(主键)、filename
(文件名)、filepath
(文件路径)和upload_time
(上传时间)。
后端实现
文件上传
首先,创建一个PHP文件upload.php
,用于处理文件上传逻辑:
<?php
// 连接数据库
$conn = new mysqli("localhost", "username", "password", "database");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$filename = $_FILES['file']['name'];
$filepath = "uploads/" . basename($filename);
if (move_uploaded_file($_FILES['file']['tmp_name'], $filepath)) {
$sql = "INSERT INTO files (filename, filepath) VALUES ('$filename', '$filepath')";
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
$conn = new mysqli("localhost", "username", "password", "database");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, filename, upload_time FROM files";
$result = $conn->query($sql);
?>
<!DOCTYPE html>
<html>
<head>
<title>File Sharing System</title>
</head>
<body>
<h1>Available Files</h1>
<table border="1">
<tr>
<th>ID</th>
<th>Filename</th>
<th>Upload Time</th>
<th>Action</th>
</tr>
<?php while($row = $result->fetch_assoc()): ?>
<tr>
<td><?php echo $row['id']; ?></td>
<td><?php echo $row['filename']; ?></td>
<td><?php echo $row['upload_time']; ?></td>
<td><a href="download.php?id=<?php echo $row['id']; ?>">Download</a></td>
</tr>
<?php endwhile; ?>
</table>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" required>
<button type="submit">Upload</button>
</form>
</body>
</html>
<?php
$conn->close();
?>
文件下载
最后,创建一个PHP文件download.php
,用于处理文件下载请求:
<?php
$conn = new mysqli("localhost", "username", "password", "database");
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
$id = $_GET['id'];
$sql = "SELECT filepath FROM files WHERE id = $id";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$filepath = $row['filepath'];
if (file_exists($filepath)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($filepath).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filepath));
readfile($filepath);
exit;
}
}
}
$conn->close();
?>
总结
通过以上步骤,我们成功搭建了一个简易的在线文件共享系统。用户可以上传文件,查看文件列表,并下载所需的文件。
评论(0)