PHP实现简易在线文件存储系统

admin 2025-01-14 777 0

在这个数字化时代,文件存储与分享已成为日常需求。本文将带你一步步用PHP搭建一个简易的在线文件存储系统,助你轻松管理文件。

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)