像拿快递一样取文件,无需注册,输入口令即可获取
English | 在线演示 | 部署教程 | 常见问题 | QQ群: 739673698
# 🚀 一键部署
docker run -d -p 12345:12345 -v /opt/FileCodeBox:/app/data --name filecodebox lanol/filecodebox:latest
# 国内镜像(如果上面拉取缓慢): docker.cnb.cool/aixk/filecodeboxFileCodeBox 是一个轻量级的文件分享工具,基于 FastAPI + Vue3 开发。用户可以通过简单的方式匿名分享文本和文件,接收者只需输入提取码即可获取内容——就像从快递柜取出快递一样简单。
| 场景 | 描述 |
|---|---|
| 📁 临时文件分享 | 快速分享文件,无需注册登录 |
| 📝 代码片段分享 | 分享代码、配置文件等文本内容 |
| 🕶️ 匿名文件传输 | 保护隐私的点对点传输 |
| 🔄 跨设备传输 | 在不同设备间快速同步文件 |
| 💾 临时存储 | 支持自定义过期时间的云存储 |
| 🌐 私有服务 | 搭建企业或个人专属分享服务 |
|
|
|
|
|
方式一:Docker CLI
# Docker Hub(推荐)
docker run -d --restart always -p 12345:12345 -v /opt/FileCodeBox:/app/data --name filecodebox lanol/filecodebox:latest
# 国内镜像(如果 Docker Hub 拉取缓慢)
docker run -d --restart always -p 12345:12345 -v /opt/FileCodeBox:/app/data --name filecodebox docker.cnb.cool/aixk/filecodebox方式二:Docker Compose
services:
filecodebox:
image: lanol/filecodebox:latest
container_name: filecodebox
restart: unless-stopped
ports:
- "12345:12345"
volumes:
- ./data:/app/data
environment:
- WORKERS=4
- LOG_LEVEL=infodocker compose up -d环境变量说明
| 变量 | 默认值 | 说明 |
|---|---|---|
HOST |
:: |
监听地址(支持 IPv4/IPv6 双栈) |
PORT |
12345 |
服务端口 |
WORKERS |
4 |
工作进程数(建议设为 CPU 核心数) |
LOG_LEVEL |
info |
日志级别:debug / info / warning / error |
使用 Nginx 时,请添加以下配置以正确获取客户端 IP:
location / {
proxy_pass http://127.0.0.1:12345;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 100m; # 根据需要调整上传大小限制
}# 1. 克隆项目
git clone https://github.com/vastsa/FileCodeBox.git
cd FileCodeBox
# 2. 安装依赖
pip install -r requirements.txt
# 3. 启动服务
python main.py| 操作 | 步骤 |
|---|---|
| 分享文件 | 打开网页 → 选择/拖拽文件 → 设置有效期 → 获取提取码 |
| 获取文件 | 打开网页 → 输入提取码 → 下载文件或查看文本 |
| 管理后台 | 访问 /#/admin → 输入密码 FileCodeBox2023 |
点击展开 curl 使用示例
上传文件
# 基础上传(默认 1 天有效期)
curl -X POST "http://localhost:12345/share/file/" \
-F "file=@/path/to/file.txt"
# 指定 1 小时有效期
curl -X POST "http://localhost:12345/share/file/" \
-F "file=@/path/to/file.txt" \
-F "expire_value=1" \
-F "expire_style=hour"
# 指定下载 10 次后过期
curl -X POST "http://localhost:12345/share/file/" \
-F "file=@/path/to/file.txt" \
-F "expire_value=10" \
-F "expire_style=count"分享文本
curl -X POST "http://localhost:12345/share/text/" \
-F "text=要分享的文本内容"下载文件
curl -L "http://localhost:12345/share/select/?code=提取码" -o filename有效期参数
expire_style |
说明 |
|---|---|
day |
天数 |
hour |
小时 |
minute |
分钟 |
count |
下载次数 |
forever |
永久有效 |
返回示例
{
"code": 200,
"msg": "success",
"detail": {
"code": "abcd1234",
"name": "file.txt"
}
}需要认证时(管理员关闭游客上传后)
# 1. 获取 token
curl -X POST "http://localhost:12345/admin/login" \
-H "Content-Type: application/json" \
-d '{"password": "FileCodeBox2023"}'
# 2. 携带 token 上传
curl -X POST "http://localhost:12345/share/file/" \
-H "Authorization: Bearer <token>" \
-F "file=@/path/to/file.txt"FileCodeBox/
├── apps/ # 应用模块
│ ├── admin/ # 管理后台
│ └── base/ # 基础功能
├── core/ # 核心模块
├── data/ # 数据目录(运行时生成)
├── docs/ # 文档
└── main.py # 入口文件
后端
pip install -r requirements.txt
python main.py前端
# 前端仓库: https://github.com/vastsa/FileCodeBoxFronted
cd fcb-fronted
npm install
npm run dev| 类别 | 技术 |
|---|---|
| 后端框架 | FastAPI 0.128+ / Uvicorn |
| 数据库 | SQLite + Tortoise ORM |
| 数据验证 | Pydantic 2.x |
| 异步支持 | aiofiles / aiohttp / aioboto3 |
| 对象存储 | S3 协议 / OneDrive / OpenDAL |
| 前端框架 | Vue 3 + Element Plus + Vite |
| 运行环境 | Python 3.8+ / Node.js 18+ |
| 容器化 | Docker / Docker Compose |
如何修改上传大小限制?
在管理面板中修改 uploadSize 配置项。如果使用 Nginx 反向代理,还需修改 client_max_body_size。
如何配置存储引擎?
在管理面板中选择存储引擎类型并配置相应参数。支持本地存储、S3、OneDrive、OpenDAL 等。
如何备份数据?
备份 data 目录即可,包含数据库和上传的文件。
如何修改管理员密码?
登录管理面板后,在系统设置中修改 adminPassword 配置项。
更多问题请访问 Wiki 或加入 QQ群: 739673698
欢迎提交 Issue 和 Pull Request!
# 1. Fork 并克隆
git clone https://github.com/your-username/FileCodeBox.git
# 2. 创建分支
git checkout -b feature/your-feature
# 3. 提交更改
git commit -m "feat: add your feature"
# 4. 推送并创建 PR
git push origin feature/your-feature- 2025 年新皮肤
- 文件收集功能
本项目开源仅供学习交流使用,不得用于任何违法用途,否则后果自负,与作者无关。使用本项目时请保留项目地址和版权信息。
如果觉得项目不错,欢迎 ⭐ Star 支持!
Made with ❤️ by vastsa









