引言
下载管理系统是管理和组织下载文件的重要工具。本文将提供一个详细的指南,指导您使用 PHP 创建一个高效的下载管理系统。
先决条件
- PHP 7 或更高版本
- MySQL 或 MariaDB 数据库
- 文本编辑器或 IDE
数据库模式
CREATE TABLE `downloads` (`id` INT(11) NOT NULL AUTO_INCREMENT,`name` VARCHAR(255) NOT NULL,`url` VARCHAR(255) NOT NULL,`size` INT(11) NOT NULL,
`downloads` INT(11) NOT NULL DEFAULT 0,`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (`id`)
);
代码实现
下载文件
if (isset($_GET['id'])) {$id = $_GET['id'];$sql = "SELECT FROM `downloads` WHERE `id` = $id";$result = $conn->query($sql);if ($result->num_rows > 0) {$row = $result->fetch_assoc();// 增加下载次数$sql = "UPDATE `downloads` SET `downloads` = `downloads` + 1 WHERE `id` = $id";$conn->query($sql);// 发送文件header("Content-Description: File Transfer");header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=" . $row['name']);header("Content-Length: " . $row['size']);readfile($row['url']);exit;} else {// 下载文件失败echo "下载文件失败";}
}
上传文件
if (isset($_FILES['file'])) {$name = $_FILES['file']['name'];$url = $_FILES['file']['tmp_name'];$size = $_FILES['file']['size'];// 确保文件小于 10MBif ($size < 10 1024 1024) {// 生成唯一的 ID$id = uniqid();// 保存文件信息到数据库$sql = "INSERT INTO `downloads` (`id`, `name`, `url`, `size`) VALUES ('$id', '$name', '$url', '$size')";$conn->query($sql);// 上传成功echo "文件上传成功";} else {// 文件太大echo "文件太大";}
}
管理下载
$sql = "SELECT FROM `downloads` ORDER BY `created_at` DESC";
$result = $conn->query($sql);
if ($result->num_rows > 0) {while ($row = $result->fetch_assoc()) {// 输出下载信息echo "";}
} else {// 没有下载记录echo "没有下载记录";
}
数据库连接
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "downloads";// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);// 检查连接
if ($conn->connect_error) {die("连接失败:" . $conn->connect_error);
}
CSS 样式(可选)
结论
本文介绍了如何使用 PHP 创建一个高效的下载管理系统。该系统允许用户上传和下载文件,并提供管理下载的界面。您可以根据自己的需求自定义和扩展该系统,比如添加用户认证、文件类型验证或下载速度限制。
© 版权声明
文章版权归作者所有,未经允许请勿转载。