# 文件共享系统 **Repository Path**: djsf12/SharedLinkProject ## Basic Information - **Project Name**: 文件共享系统 - **Description**: 一个基于Flask的简单、安全的文件共享系统,支持文件上传、生成访问链接、设置过期时间和自动清理功能。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-16 - **Last Updated**: 2025-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 文件共享系统 一个基于Flask的简单、安全的文件共享系统,支持文件上传、生成访问链接、设置过期时间和自动清理功能。 ## 功能特性 ### 核心功能 - ✅ 文件上传与共享 - ✅ 基于访问码的安全访问 - ✅ 可设置文件访问有效期 - ✅ 访问密码保护(可选) - ✅ 大文件支持(最高5GB) - ✅ 下载页面显示文件信息 ### 管理功能 - ✅ 后台管理界面(Flask-Admin) - ✅ 共享链接管理 - ✅ 定时任务配置 - ✅ IP访问控制 ### 自动维护 - ✅ 过期链接自动删除 - ✅ 未关联文件自动清理 - ✅ 临时文件夹定期清理 - ✅ 详细操作日志记录 ## 技术栈 - **后端框架**: Flask 2.x - **数据库**: SQLite (可扩展为MySQL/PostgreSQL) - **ORM**: SQLAlchemy - **任务调度**: APScheduler - **文件上传**: Flask-WTF - **安全认证**: Flask-Login, Werkzeug - **管理界面**: Flask-Admin - **前端**: Bootstrap 5, HTML/CSS/JavaScript ## 安装步骤 ### 1. 克隆项目 ```bash git clone https://gitee.com/your-username/file-share-system.git cd file-share-system ``` ### 2. 创建虚拟环境 ```bash # Windows python -m venv venv venv\Scripts\activate # Linux/macOS python3 -m venv venv source venv/bin/activate ``` ### 3. 安装依赖 ```bash pip install -r requirements.txt ``` ### 4. 初始化数据库 ```bash python init_db.py ``` ### 5. 启动应用 ```bash # 开发环境 python app.py # 生产环境 FLASK_CONFIG=production python app.py ``` 应用将在 `http://127.0.0.1:5000` 启动 ## 使用说明 ### 文件上传 1. 访问首页 `http://127.0.0.1:5000` 2. 点击"选择文件"按钮选择要上传的文件 3. 可选:设置访问密码、有效期 4. 点击"生成共享链接" 5. 复制生成的访问码或完整链接 ### 文件下载 1. 访问共享链接:`http://127.0.0.1:5000/download/<访问码>` 2. 如果设置了密码,输入密码后点击"验证" 3. 点击"下载文件"按钮即可下载 ### 后台管理 1. 访问管理后台:`http://127.0.0.1:5000/admin/` 2. 使用管理员账号登录 3. 管理共享链接和定时任务 ## 项目结构 ``` file-share-system/ ├── app.py # 应用入口文件 ├── config.py # 配置文件 ├── extensions.py # 扩展初始化 ├── models.py # 数据库模型 ├── forms.py # 表单定义 ├── views.py # 视图函数 ├── utils.py # 工具函数 ├── init_db.py # 数据库初始化 ├── requirements.txt # 依赖列表 ├── check_tasks.py # 任务检查脚本 ├── README.md # 项目说明文档 ├── instance/ # 实例目录 │ └── file_share.db # SQLite数据库文件 ├── uploads/ # 文件上传目录 ├── logs/ # 日志目录 ├── static/ # 静态资源 │ ├── css/ │ └── js/ └── templates/ # HTML模板 ├── admin/ # 管理后台模板 └── *.html # 前端页面模板 ``` ## 配置说明 ### 环境变量 可以通过环境变量覆盖默认配置: ```bash # 设置密钥(生产环境必须设置) export SECRET_KEY="your-secure-secret-key" # 设置数据库连接 export DATABASE_URL="sqlite:///instance/file_share.db" # 设置Flask配置环境 export FLASK_CONFIG="production" # 启用/禁用SSL export SSLIFY_ENABLE="True" ``` ### 配置文件 (config.py) 主要配置项: ```python class Config: SECRET_KEY = os.environ.get('SECRET_KEY') or 'your-secret-key' # 密钥 SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or 'sqlite:///instance/file_share.db' # 数据库连接 UPLOAD_FOLDER = 'uploads/' # 文件上传目录 MAX_CONTENT_LENGTH = 5 * 1024 * 1024 * 1024 # 最大文件大小(5GB) SSLIFY_ENABLE = os.environ.get('SSLIFY_ENABLE') == 'True' # 是否启用SSL class DevelopmentConfig(Config): DEBUG = True SSLIFY_ENABLE = False # 开发环境禁用SSL class ProductionConfig(Config): DEBUG = False SSLIFY_ENABLE = True # 生产环境启用SSL ``` ## 定时任务 系统包含两个主要定时任务: ### 1. 删除过期链接 (delete_expired_links) - 功能:自动删除过期的共享链接和相关文件 - 默认:每5分钟执行一次 - 配置:在后台管理的"定时任务配置"中设置 ### 2. 清理上传目录 (cleanup_uploads) - 功能:清理uploads目录中未关联数据库的文件和临时文件夹 - 默认:每天凌晨2点执行 - 配置:在后台管理的"定时任务配置"中设置 ## 安全建议 1. **生产环境必须修改SECRET_KEY** 2. **配置强管理员密码** 3. **启用SSL(生产环境)** 4. **设置合理的文件大小限制** 5. **定期备份数据库** 6. **监控日志文件** ## 日志 日志文件位于 `logs/auto_delete.log`,记录了: - 定时任务执行情况 - 文件删除操作 - 系统错误信息 ## 贡献 欢迎提交Issue和Pull Request来帮助改进项目! ## 许可证 MIT License ## 联系方式 如有问题或建议,请通过以下方式联系: - Gitee: https://gitee.com/your-username/file-share-system --- **注意:** 本项目仅用于学习和内部使用,生产环境部署时请确保配置适当的安全措施。