Files
ufile/README.md
T
loveuer 6895d98606
CLI Build / build (push) Failing after 2s
Release / deploy (push) Successful in 3m56s
ci: build CLI on master pushes
2026-09-21 00:58:05 -07:00

69 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ufile
一个单二进制运行的轻量文件快传服务。支持多用户权限、限时保存、限次访问、6 位取件码,以及无需登录的下载和预览链接。普通上传单文件最大 10 MB,高级上传不受此限制。文件管理员可以查看并删除全部当前有效文件。
## 构建
需要 Go 1.24+ 与 Node.js 20+:
```bash
./build.sh
```
也可以运行 `make build`。构建脚本会先安装并编译前端,再通过 `go:embed` 将产物写入最终的 `ufile` 二进制,同时构建 `ufile-cli`;SQLite 使用纯 Go 驱动,不依赖 CGO。
## ufile-cli
`ufile-cli` 面向自动化和 Agent,成功结果统一输出 JSON,错误 JSON 输出到 stderr,并使用稳定退出码。常用选项提供短参数,危险或低频选项保留语义明确的长参数;服务地址支持 `-H`、`--host` 和 `--server`。
```bash
# 密码不会进入命令参数或配置文件
printf '%s\n' "$UFILE_PASSWORD" | \
./ufile-cli -H https://ufile.example.com auth login -U agent --password-stdin
# 默认自动生成并回显 6 位取件码
./ufile-cli upload ./result.zip -R 1d -D 5
# 只有显式指定 --no-pickup-code 才创建公开分享
./ufile-cli upload ./public.txt --no-pickup-code
# 下载不会额外调用取件校验接口
./ufile-cli download Ab3dE8xP -C 123456 -O ./result.zip
```
运行 `ufile-cli help` 查看输出契约、环境变量和退出码,运行 `ufile-cli help upload` 或 `ufile-cli help download` 查看权限要求及操作副作用。
多平台构建:
```bash
make cli-dist
```
产物位于 `dist/`,覆盖 Linux、macOS 和 Windows 的 amd64/arm64,并附带 `checksums.txt`。推送 `master` 分支时,Gitea Actions 会构建全部 CLI 产物并校验校验和。
## 运行
```bash
./ufile --data ./data --address 0.0.0.0:6616
```
参数:
- `--data`:文件目录,默认 `./data`
- `--db`:SQLite 文件路径;留空时为 `<data>/data.db`
- `--address`:监听地址,默认 `0.0.0.0:6616`
首次使用空数据库启动时,终端会输出 `admin` 的随机密码。该账号第一次登录后必须立即修改密码。
拥有用户管理权限的账号只能授予自己已有的权限,也不能编辑、重置或删除权限高于自己的账号。
## 分享链接
- 下载:`/uf/<file_hash>`
- 预览:`/uf/<file_hash>?preview=true`
- 有取件码时追加:`code=<6位取件码>`
预览也会消耗一次访问次数。文件过期、访问次数耗尽或所属用户被删除时,数据库记录和磁盘文件都会被清理。
设置取件码的文件会统一记录校验、下载和预览请求中的连续失败;缺失或错误的取件码累计 5 次后,文件会立即从数据库和磁盘删除,正确校验会清零失败次数。