阅后自焚文件分享
上传文件并设置访问次数,达到次数后或者24小时后自动销毁
支持文件类型:图片(JPG/PNG/GIF/WEBP)、压缩包(ZIP/RAR)、安装包(EXE/APK/IPA)、文档(DOC/DOCX)






项目概述
这是一个基于PHP的临时文件分享系统,支持文件上传、访问次数限制和24小时自动销毁功能。
文件结构分析
- STORAGE_DIR: 文件存储目录
- DB_FILE: JSON数据库文件路径
- MAX_VIEWS_MIN/MAX: 访问次数限制范围
核心功能模块
1. 文件上传处理
- 支持的文件类型:
- 图片: JPG, JPEG, PNG, GIF, WEBP
- 压缩包: ZIP, RAR
- 可执行文件: EXE, APK, APKX, IPA
- 文档: DOC, DOCX
- 验证机制: MIME类型 + 文件扩展名双重验证
- 文件命名: `{token}_{原文件名}` 格式
2. 访问控制系统
- 时间限制: 24小时自动过期
- 次数限制: 1-999次可配置访问次数
- 访问统计: 实时计数和剩余次数显示
3. 数据存储
"filename": "存储文件名",
"max_views": "最大访问次数",
"views": "当前访问次数",
"created": "创建时间戳"
核心函数详解
数据库操作
- `loadDatabase()`: 加载JSON数据库
- `saveDatabase($data)`: 保存数据到JSON文件
清理机制
- `cleanupExpiredFiles()`: 清理24小时过期文件
- 自动删除过期文件和数据库记录
页面渲染
- `renderSharePage($entry, $token)`: 文件分享页面
- `renderExpiredPage($message)`: 过期提示页面
- `renderInvalidLinkPage()`: 无效链接页面
工具函数
- `formatFileSize($bytes)`: 文件大小格式化
- `getFileIcon($ext)`: 文件类型图标配置
- `isImageFile($ext)`: 图片文件判断
- `adjustBrightness($hex, $percent)`: 颜色亮度调整
UI设计特色
现代化配色方案
- 主色调: 蓝紫色渐变 (667eea → 764ba2 → f093fb)
- 背景: 对角线渐变 (f5f7fa → c3cfe2)
- 卡片: 半透明白色 + 毛玻璃效果
- 阴影系统: 三级阴影效果 (light/medium/large)
交互体验
- 悬停效果: 按钮和卡片的平滑过渡动画
- 响应式设计: 移动端适配优化
- 视觉反馈: 文件类型图标和进度指示
安全机制
文件验证
- MIME类型白名单验证
- 文件扩展名检查
- 上传错误处理
访问控制
- 唯一token生成 (32位十六进制)
- 时间和次数双重限制
- 自动清理过期文件
目录权限
- 存储目录权限设置 (0700)
- 自动创建必要目录
功能特性
文件分享页面
- 文件信息展示 (名称、大小、类型)
- 剩余访问次数显示
- 剩余时间倒计时 (小时/分钟)
- 一键下载功能
- 图片预览模态框
用户界面
- 拖拽上传支持
- 访问次数计数器
- 实时文件类型提示
- 美观的错误提示页面
技术栈
- 后端: 纯PHP (无框架依赖)
- 前端: HTML5 + CSS3 + JavaScript
- 存储: JSON文件数据库
- 样式: Font Awesome 图标库
- 特效: CSS3动画 + 毛玻璃效果
文件组织
```
aa/
├── index.php 主程序文件
├── database.json JSON数据库
└── storage/ 文件存储目录
└── {token}_{filename}
```
工作流程
1. 上传: 文件验证 → 生成token → 存储文件 → 记录数据库
2. 访问: token验证 → 时间检查 → 次数检查 → 计数增加 → 页面渲染
3. 下载: 访问验证 → 文件传输 → 达到限制时自动删除
4. 清理: 定期检查 → 删除过期文件 → 更新数据库
这个系统设计简洁高效,具有完整的文件分享、访问控制和自动清理功能,适合临时文件分享场景使用。