droppy-2501网盘系统源码

作者 : tideit 本文共4213个字,预计阅读时间需要11分钟 发布时间: 2026-09-14 共32人阅读

Droppy 网盘项目分析

框架:CodeIgniter(PHP),程序本体为开源免费网盘 Droppy(Proxibolt 开发),本目录是一个二次开发/修改过的发行版(含数据库表前缀 droppy_、更新 SQL updatev2.sql)。

一句话说明

这是一个自托管文件分享网盘。用户注册(邮箱验证)后上传文件,得到一个带提取码的下载链接;任何人(或注册后用户)输入提取码即可下载。站长负责后台管理:用户、上传文件、自定义页面、主题/背景、设置、广告位、插件、定时清理过期文件、系统更新。

技术栈

层 内容
语言/框架 PHP + CodeIgniter(system/ 是 CI 框架核心)
数据库 MySQL(16 张表,前缀 droppy_,安装脚本在 application/install/droppy.sql)
前端 jQuery 3.6、Bootstrap、jquery.fileupload(大文件分块上传)、Vegas(旋转背景图)、Knob 滑块
手机适配 Mobile_Detect 库
图片处理 GD / Imagick / ImageMagick(生成缩略图)
加密 文件可选 AES 加密存储(设置 encrypt_files)
多语言 9 种:英、德、法、西、意、荷、捷、斯洛伐克、土(application/language/)

模块清单

1. 安装模块

  • 首次访问 /install 走 5 步安装向导:检测环境 → 建库导入 droppy.sql → 建管理员账号 → 基础设置 → 完成。
  • 关键文件:application/controllers/Install.php、application/libraries/InstallLib.php、application/install/droppy.sql。

2. 前台首页与上传模块

  • 用户访问首页(/):未登录跳登录页,登录后看到上传页。
  • 上传走 jquery.fileupload 分块协议:前端先 Upload::genid() 拿会话 ID → 分块传 Upload::register() → 全部传完 Upload::complete() 落库(droppy_uploads 生成 upload_id + secret_code 即提取码)。
  • 图片自动出缩略图;开启加密设置时文件 AES 加密后才存盘。
  • 关键文件:application/controllers/Home.php、application/controllers/Upload.php、application/libraries/UploadHandler.php、application/libraries/CompleteHandler.php、application/views/themes/modern/upload.php。

3. 下载模块

  • 分享链接形如 /page/xxx(404 路由统一指向 Home::download),用户输入提取码 → Handler::password() 校验 → Handler::download() 流式输出文件;同时写入 droppy_downloads 做下载统计。
  • 关键文件:application/controllers/Handler.php、application/models/Files.php、application/models/Downloads.php。

4. 登录与用户模块

  • 邮箱注册 + 邮件验证(droppy_email_verify 存待验证记录,Upload::verify_email 完成验证),账号表 droppy_accounts。
  • 后台管理员账号体系独立(droppy_users),与前台邮箱账号分开。
  • 关键文件:application/controllers/Login.php、application/libraries/AuthLib.php、application/libraries/Email.php(SMTP 发信)、application/models/Accounts.php、application/models/Emailverify.php、application/models/Users.php。

5. 后台管理模块(/admin)

application/controllers/Admin.php 一个控制器管理所有后台页:

子模块 功能
首页/系统 磁盘用量、系统状态、htaccess 检查、一键系统更新(UpdateLib 拉 Proxibolt 官方文件 + 跑 updatev2.sql)
上传管理 查/删上传文件、导出上传记录(uploadsexport)
下载管理 下载统计记录
用户管理 增删改管理员/用户账号
页面管理 自定义页面 CRUD(droppy_pages,前台 /page/名字 访问)
背景 上传自定义轮播背景图
主题 启停/切换主题(droppy_themes)
插件 加载/卸载插件管理页
设置 全站配置:站点名、文件大小/数量限制、文件过期时间、禁用文件类型、密码开关、SMTP 邮箱、条款、SEO、广告位(ad_1/ad_2)、购买码等,全部存 droppy_settings
日志 操作日志(droppy_log)
个人 管理员改自己账号/密码

视图在 application/views/admin/(15 个子页面 + settings 子目录),辅助逻辑在 application/libraries/AdminLib.php。

6. 定时任务模块

  • URL /cron(application/controllers/Cron.php),由站长用 crontab 定时调用,做六件事:
    1. 标记过期上传为待删(按设置 expire 天数)
    2. 真正删除过期文件
    3. 清理 uploads/temp 临时分块
    4. 执行各插件自定义 cron
    5. 删除过期下载统计等老数据
    6. 删除过期邮箱验证记录
  • 逻辑全在 application/libraries/CronLib.php。

7. 插件模块

  • application/plugins/ 目录放插件(本发行版为空,只有 index.html 占位)。
  • 插件机制(application/libraries/Plugin.php):每个插件是一个文件夹 + config.json,可注册自定义前台标签页、自定义 CSS、后台管理页、cron 任务。代码里还留有 premium 插件判断(pluginLoaded('premium')、callProxibolt),说明原版有付费扩展。

8. 辅助/公共模块

  • 多语言系统:application/models/Language.php + 后台可管理语言包条目(droppy_templates 存邮件/消息模板,按语言分存)。
  • 社交图标:droppy_social 配 Facebook/Twitter/GitHub 等 8 个链接,页脚展示(application/models/Socials.php)。
  • 轮播背景:droppy_backgrounds + Vegas.js,application/models/Backgrounds.php。
  • 移动端识别:application/libraries/Mobile_Detect.php,手机端切移动主题。
  • Hook:application/hooks/ConfigHook.php 在请求早期加载配置。
  • 会话:droppy_sessions 存 PHP 会话。

数据表一览(16 张)

表 用途
droppy_accounts 前台注册用户(邮箱/密码/IP)
droppy_email_verify 邮箱验证 token
droppy_users 后台管理员账号
droppy_uploads 上传批次(upload_id、secret_code、接收人邮箱)
droppy_files 具体文件记录(关联 upload_id,含大小/缩略图标记)
droppy_downloads 下载次数统计(IP/邮箱)
droppy_receivers 下载接收人
droppy_pages 自定义页面
droppy_settings 全站配置(单行存储)
droppy_backgrounds 轮播背景图
droppy_themes 主题(modern/deprecated)
droppy_templates 多语言消息/邮件模板
droppy_social 社交链接
droppy_language 启用语言列表
droppy_log 操作日志
droppy_sessions / droppy_updates 会话 / 更新记录

文件/数据流向

用户上传分块 → uploads/temp/(暂存)
          → Upload::complete 合并入库 → 存正式位置(可加密、出缩略图)
          → 生成 download 链接(upload_id + secret_code)
定时任务   → 按 expire 天数标记过期 → 删文件 + 清临时分块
下载       → /page/{id} 输提取码 → 流式下载 → 写下载统计
后台       → Admin 控制器各页 → 改 settings/页面/背景/主题/用户
插件       → plugins/*/config.json → 注入自定义页签/CSS/后台页/cron

已知注意点

  1. 这是修改版 Droppy:updatev2.sql 和表结构与原版 Proxibolt Droppy 有差异(原版无 droppy_receivers/droppy_sessions),AdminLib::callProxibolt 仍保留官方更新通道,跑官方更新可能与本地改动冲突。
  2. 默认安装 SQL 里 droppy_settings 的 site_url 等预置了 proxibolt.com,部署后需改。
  3. 后台更新功能从官方服务器拉文件,属于外部依赖;内网部署时该功能不可用。
  4. 文件默认存 uploads/ 目录(安装时可选 upload_dir),uploads/temp 放分块临时件。
  5. 代码里无 115/123/百度等第三方云盘 API 封装——这是纯本地存储网盘,不是云盘同步工具。
暂无优惠

已有1人支付


我爱数钱钱 » droppy-2501网盘系统源码

常见问题FAQ

发表评论