pan / README.md
WACATW's picture
Upload 10 files
66bfab2 verified
|
Raw History Blame Contribute Delete
4.93 kB
metadata
title: 云盘 - Cloud Disk
emoji: 💾
colorFrom: purple
colorTo: pink
sdk: docker
app_file: app.py
pinned: false

云盘 - Cloud Disk v2.0

一个轻量级的个人云盘应用,支持用户注册登录、独立存储空间、文件上传下载、文件夹管理等功能。

✨ 功能特性

v2.0 新功能

  • 👤 用户系统:支持注册、登录、退出
  • 🔒 空间隔离:每个用户独立存储空间,数据安全隔离
  • 💾 存储配额:每个用户 1GB 存储空间
  • 📊 实时显示:存储空间使用情况实时展示

核心功能

  • 📁 文件管理:上传、下载、删除文件
  • 📂 文件夹管理:创建、浏览、删除文件夹
  • 🎨 现代化界面:美观的 UI 设计,支持响应式布局
  • 🖱️ 拖拽上传:支持拖拽文件到上传区域
  • 🔐 密码安全:密码哈希存储,保护用户隐私

🚀 部署到 Hugging Face Spaces

Docker 部署(推荐)

  1. 在 Hugging Face 创建一个新的 Space,选择 Docker 作为 SDK
  2. 将本项目的所有文件上传到 Space 仓库
  3. 等待部署完成后即可访问

💡 注意:v2.0 版本默认使用本地存储,无需配置 HF_TOKEN 和 DATASET_REPO。但 Hugging Face Spaces 重启后数据可能会丢失。

📦 使用 Storage Buckets 持久化存储(推荐)

为了防止数据丢失,建议使用 Hugging Face 的 Storage Buckets 功能:

  1. 在你的 Space 设置中找到 Storage Buckets 部分
  2. 点击 Mount a bucket 挂载一个存储桶
  3. 挂载路径设置为 /data
  4. 重新部署 Space,数据就会自动保存到存储桶中

✅ 使用 Storage Buckets 后,即使 Space 重启,数据也不会丢失!

本地运行

# 安装依赖
pip install -r requirements.txt

# 运行
python app.py

访问 http://localhost:7860 即可使用。

⚙️ 环境变量配置

变量名 说明 默认值
SECRET_KEY Session 加密密钥 cloud-disk-secret-key-2024
STORAGE_PATH 存储文件路径(Storage Buckets 设为 /data) /data
PORT 服务端口 7860

📝 使用说明

注册账号

  1. 打开应用后点击"立即注册"
  2. 输入用户名(3-20位,支持字母、数字、下划线、中文)
  3. 设置密码(至少6位)并确认
  4. 点击"注册账号"完成注册

登录账号

  1. 输入用户名和密码
  2. 点击"登录"进入云盘

上传文件

  • 点击"上传文件"按钮选择文件
  • 或直接拖拽文件到上传区域
  • 支持批量上传多个文件
  • 上传前会检查剩余存储空间

创建文件夹

  • 点击"新建文件夹"按钮
  • 输入文件夹名称并确认

浏览文件

  • 点击文件夹进入
  • 使用面包屑导航返回上级目录
  • 点击刷新按钮重新加载文件列表

下载/删除文件

  • 点击下载图标下载文件
  • 点击删除图标删除文件或文件夹(删除前会确认)

查看存储空间

  • 顶部显示存储空间使用进度条
  • 上传、删除文件后会自动更新

退出登录

  • 点击右上角的退出图标
  • 确认后返回登录页面

🏗️ 技术栈

  • 后端:Flask (Python)
  • 前端:HTML + CSS + JavaScript + Font Awesome
  • 用户认证:Werkzeug Security + Flask Session
  • 存储:本地文件系统
  • 部署:Docker / Hugging Face Spaces

📁 项目结构

cloud-disk/
├── app.py                 # Flask 后端应用
├── requirements.txt       # Python 依赖
├── Dockerfile             # Docker 部署配置
├── README.md              # 说明文档
├── .env.example           # 环境变量示例
├── storage/               # 存储目录(运行时自动创建)
│   ├── users.json         # 用户数据文件
│   └── users/             # 用户存储目录
│       └── {username}/    # 每个用户独立目录
├── templates/
│   ├── index.html         # 主页面
│   ├── login.html         # 登录页面
│   └── register.html      # 注册页面
└── static/
    ├── css/style.css      # 样式文件
    └── js/app.js          # 前端交互逻辑

🔒 安全特性

  • 密码哈希:使用 werkzeug.security 进行密码哈希存储
  • 路径安全:防止路径遍历攻击,用户只能访问自己的文件
  • 空间隔离:每个用户独立存储目录,数据互不干扰
  • 配额限制:每个用户最多 1GB 存储空间,防止滥用

⚠️ 注意事项

  1. 数据持久化:建议使用 Storage Buckets 存储(路径 /data),这样 Space 重启后数据不会丢失
  2. 并发限制:单用户演示用途,高并发场景可能需要优化
  3. 存储配额:每个用户 1GB 空间,超出后无法上传新文件

📄 License

MIT License