通知
📁 0 目录 📄 2 文件
🔍 ⚡索引
名称 大小 修改时间 权限
📂 返回上级目录
📝 README.md 5.5 KB 2026-06-13 22:11 0755
📦 TempShare.zip 37.4 KB 2026-06-13 22:11 0755

TempShare — 临时文件分享系统

基于 PHP 构建的轻量级临时文件存放与分享程序,支持大文件分块上传、断点续传、管理后台。

功能特性

项目结构

jirafeau-clone/
├── index.php              # 主上传页面(拖拽 + 进度条 + 断点续传)
├── upload_handler.php     # 直传处理(≤50 MB)
├── upload_init.php        # 分块上传初始化(创建会话)
├── upload_chunk.php       # 分块上传接收单块数据
├── upload_complete.php    # 分块上传完成组装
├── upload_progress.php    # 上传进度查询
├── download.php           # 文件下载 / 分享 / 删除
├── admin.php              # 密码保护的管理后台
├── cleanup.php            # 过期文件清理(CLI + Web)
├── config.php             # 配置文件
├── functions.php          # 核心函数库
├── .htaccess              # Apache 安全规则
├── assets/
│   ├── css/style.css      # 样式表
│   └── js/upload.js       # 前端上传交互
├── uploads/               # 文件存储目录
│   └── .htaccess          # 禁止直接访问
├── data/                  # 元数据存储目录
│   ├── .htaccess          # 禁止直接访问
│   └── chunks/            # 分块临时存储
│       └── .htaccess
└── README.md
## 部署方式

1. 本地开发

php -S localhost:8080 -t jirafeau-clonebash
访问 http://localhost:8080

2. Apache / Nginx

将项目目录设为网站根目录,确保:

Nginx 配置示例:

server {
    listen 80;
    server_name your-domain.com;
    root /path/to/jirafeau-clone;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 禁止访问敏感目录
    location ~ ^/(uploads|data)/ {
        deny all;
    }
}nginx
### 3. 定时清理

建议配置 cron 定期执行清理脚本:

*/5 * * * * php /path/to/jirafeau-clone/cleanup.phpbash
也可通过浏览器访问 http://your-domain.com/cleanup.php 手动触发。

配置说明

编辑 config.php

配置项说明默认值
SITE_NAME站点名称TempShare - 临时文件分享
MAX_FILE_SIZE单文件最大大小(MB)4096(4 GB)
CHUNK_SIZE分块大小(字节)5 * 1024 * 1024(5 MB)
ADMIN_PASSWORD_HASH管理员密码哈希admin123(请立即修改)
ONE_TIME_DOWNLOAD是否一次性下载false
FORBIDDEN_EXTENSIONS禁止上传的扩展名37 种危险类型
EXPIRY_OPTIONS文件有效期选项1h / 6h / 12h / 1d / 3d / 7d
修改管理员密码:

php -r "echo password_hash('你的新密码', PASSWORD_BCRYPT) . PHP_EOL;"bash
将输出结果替换 config.php 中的 ADMIN_PASSWORD_HASH

分块上传流程

文件选择
  │
  ├─ ≤ 50 MB → 直传模式(upload_handler.php)
  │
  └─ > 50 MB → 分块模式:
       ├── POST upload_init.php     → 创建上传会话 / 断点恢复
       ├── POST upload_chunk.php    → 并发上传每块(5 MB/块,最多 3 并发)
       └── POST upload_complete.php → 校验并组装文件 → 生成分享链接
断点续传通过 localStorage 存储上传会话 ID,刷新或重新打开页面时自动检测并提示恢复。

管理后台

访问 http://your-domain.com/admin.php,默认密码 admin123

功能:

安全特性

防护实现方式
路径穿越Token / UploadId 格式严格校验(hex)
CSRF所有管理操作需 Session CSRF Token
XSSContent-Type 强制服务端 finfo 检测 + Content-Disposition RFC 5987
Session 固定登录后 session_regenerate_id(true)
暴力破解5 次失败锁定 15 分钟 + sleep(1) 延迟
文件类型37 种危险扩展名黑名单
响应头nosniff / DENY / no-referrer / XSS-Protection
IP 伪造不信任 X-Forwarded-For,仅使用 REMOTE_ADDR

技术栈

许可

MIT License