|
|
пре 3 недеља | |
|---|---|---|
| .gitignore | пре 3 недеља | |
| README.md | пре 3 недеља | |
| build.bat | пре 3 недеља | |
| go.mod | пре 3 недеља | |
| main.go | пре 3 недеља | |
| token.go | пре 3 недеља |
基于 Go 标准库的轻量文件传输服务,仅认领运行目录下的 share/ 文件夹及其所有子文件夹,零第三方依赖。
所有接口均为 GET,URL 中只传一个加密的 key,不暴露任何文件路径,且 key 由 base64url 字符(A-Za-z0-9-_)构成,链接永远不需要做 URL 转义,方便一键分享。
go run . # 默认监听 :8080
go run . -addr :9000 # 自定义端口
go run . -root D:/path/to/share # 自定义共享目录
go run . -secret ./my.key # 自定义密钥文件位置
启动时若 share/ 不存在会自动创建;密钥文件 .secret.key 不存在时会自动生成随机 AES-256 密钥。
.secret.key(已加入 .gitignore),密钥不变则所有历史链接永久有效,服务重启不影响;删除或更换该文件,旧链接立即全部失效(等价于全局吊销)。获取目录下的文件和子目录列表。不传 key 表示根目录;进入子目录时传该目录条目的 key。若目录下存在 reademe.md(兼容 readme.md,大小写不敏感),其内容会放入 readme 字段。
GET /api/get_dict_detail
GET /api/get_dict_detail?key=<目录key>
响应:
{
"key": "",
"name": "share",
"readme": "# 共享根目录\n……",
"entries": [
{
"name": "文档资料",
"key": "KrL-2DN0fcoyrWQM4taObwQjXOWDx4S724XQIQQfBR_Nan8H0qCQ1A",
"type": "dir",
"size": 0,
"mod_time": "2026-10-10T18:39:16Z"
}
]
}
type 为 file 或 dir;目录在前、文件在后,各自按名称排序。
下载单个文件,支持 Range/断点续传:
GET /api/download?key=<文件key>
不支持下载目录。
text/plain; charset=utf-8 返回,防止同源 XSS):大小上限 10 MiB。其他类型返回 415,提示走下载。
GET /api/preview?key=<文件key>
.. 穿越、绝对路径,任何请求都无法逃逸出 share/。.secret.key 是安全核心:持有它即可伪造任意文件链接,勿提交到代码仓库或外泄。{"code": <http状态码>, "message": "..."},不泄露解密细节。