用 Alist 的人多半遇到过同一个尴尬:库挂得挺漂亮,目录结构也理好了,可真要往里放一个文件——找不到上传的地方。Alist 的主线是「展示你已有的存储」,写操作一直不是它的重点。

toalist 就是补这个口子的。一句话概括:一个 Go 写的小程序,站在 Alist 前面接文件,然后把文件转交给 Alist 落盘。项目是 lovebai/toalist,MIT 协议,59 星、6 fork,2025 年 6 月建仓,年底之后没再有大动作。

一、三样东西的分工

客户端 → toalist → Alist 的流转,以及 local 独立模式与代理模式两种用法

它把自己定位成 Alist 的「前置应用」,但它也能不依赖 Alist 单独跑——这两种模式是理解它的关键。

对接 Alist 时,文件流是这样走的:客户端把文件 POST 给 toalist,toalist 做完校验,按你配置的方式(表单上传或流式上传)转给 Alist 的 API,Alist 再落到你在它那里指定的目录。你现在浏览器里打开的是 toalist 的上传页,看到文件列表的地方还是 Alist。

local 模式下,它谁都不用,文件直接写进程序自己目录下的文件夹,配一个简易文件管理页就能看。这个模式不需要 Alist,也不需要数据库——一个二进制、一个配置文件,就是一套自建图床。

第三种是「代理模式」:打开这个开关后,下载文件的流量也要从 toalist 过一道。好处很实在——后端 Alist 可以完全不暴露在公网,只让 toalist 对外。代价也清楚:这台机器要扛全部下载流量,带宽和 CPU 都算它的。

二、上传要过五道关

上传接口的五道校验:签名、类型白名单、大小上限、重名处理、落地方向,每道对应一个配置项

它的上传接口就是一个标准 HTTP 接口,路径固定,参数是文件和签名。真正决定「谁能传、能传什么」的,是配置文件里这几个值:

  • 签名:请求里带一个约定的值,对不上就拒。
  • 后缀白名单:只放行你写进去的类型。默认给了一串,从图片到压缩包、视频都有。如果只当图床用,就该把它收窄到图片格式,否则你的域名迟早被人当免费文件柜。
  • 大小上限:单位是 MB,默认 50。这一项要注意配合前置的网关一起改,不然请求会先被网关拦下来,报的错还看不懂。
  • 重名策略:保留原名,还是自动加后缀避免覆盖。批量传截图的时候,这一项决定你是丢文件还是留一堆同名副本。
  • 落地方向:表单上传、流式上传,或者存本地。README 推荐表单上传,大文件用流式更省内存。

这里有个必须自己处理的点:README 的示例配置里,签名写的是一个固定的明文短语,配进客户端就能直接用。这意味着任何拿到接口地址和这个值的人,都能往你的库里塞文件。自己电脑上玩无所谓,一旦这个地址被扫到,第一件该做的事就是把这个值换掉。

三、它真正的实用性在「当图床」

这个项目最讨巧的地方,是把上传做成了标准表单接口,于是所有主流的截图上传工具都能接:

  • PicGo / PicList:README 直接给了 JSON 配置片段,填接口地址、表单字段名、返回值的取值路径即可。剪完图按快捷键,链接直接进剪贴板。
  • ShareX:同样给了一份 JSON,指定请求方式、表单参数和返回 URL 的路径。
  • 自己写脚本:只要是能 POST 表单的东西都行。

这条路径的价值在于闭环很短:截图 → 自动上传 → 拿到链接 → 粘进文档。不需要注册任何第三方图床,也不需要担心哪天图床关停、老文章里的图全挂。

上传完成后在 Alist 里看到的文件列表:文件名、大小、修改时间

上图是上传完成后在 Alist 里看到的结果。文件确实进去了,剩下的展示、挂载、分享都还是 Alist 的活。

四、部署:四种方式,选一种

作者把安装方式铺得比较全:Windows 下解压运行 exe;Linux 和 macOS 给的是可执行文件加压缩包;要常驻就跑成系统服务(Linux 用 systemd,Windows 用 NSSM),README 里连服务单元文件的内容都写好了;不想碰这些就直接上 Docker,镜像在 GitHub 容器仓库和 Docker Hub 上各有一份,端口 5245,需要挂两个目录——一个放配置,一个放本地文件。

配置文件是 ini 格式,第一次运行如果没建,程序会自己生成一份默认的。改完必须重启服务才生效——这一条 README 特意加粗了,因为很多人改完配置发现没变化,以为是程序的问题。

还有两个密码要自己生成:本地文件管理页的登录密码,和 Alist 的密码。程序本身带命令行参数可以把明文转成对应的哈希或密文,把输出粘回配置里就行。也就是说,配置文件里不会出现明文密码,这一点做得比不少同类小工具规矩。

五、它的边界

这是一个 59 星、单人维护的小项目,把期待值放对位置比较重要:

  • 它没有账号体系。local 模式下的那个登录只管简易文件管理页,不是给上传接口做权限的。想按用户分配上传权限,它做不到。
  • 它不做存储。落盘是 Alist 或本地磁盘的事,它只负责「转交」。所以别指望它解决存储扩容、去重、秒传这些问题。
  • 它对 Alist 有版本依赖。接口是照着 Alist 的 API 写的,Alist 大改版时它不一定跟得上。README 里也提到过某个版本之后静态资源改成本地化,想用 CDN 就退回旧版本——这类细节说明它还在跟着上游走。
  • 维护节奏偏慢。2025 年底之后基本没新提交。功能是够用的,但别指望遇到问题能很快修。

六、适合谁

适合:已经在用 Alist、需要一个顺手上传入口的人;想自建图床、又不想为了一个上传功能装整套博客或网盘的人;需要给非技术同事一个「打开网页就能传文件」的界面的人。

不适合:需要多用户、细粒度权限的团队;要传超大文件、要求断点续传的场景;以及完全不想碰配置文件的人——虽然它界面简单,但模式切换、密码生成、代理开关这些还是要改 ini。

说到底,这是一个定位极窄但切得准的工具。它不试图成为网盘,也不跟 Alist 抢活,只把「往 Alist 里放文件」这一件事做成一个干净的接口加一个干净的页面。对于已经有 Alist 的人来说,这恰好是缺的那一块。

本文根据项目公开仓库 lovebai/toalist 的 README 与默认配置说明整理撰写。第三张配图为仓库 README 所附官方截图(Alist 文件列表),前两张为依据配置项与请求流程自绘。文中星标数、许可协议、端口与默认配置值均为撰写时仓库所载,项目更新较慢,请以仓库当前状态为准。本文不含外链入口与推广内容。

本文整理自公开资料并做重写,原始出处:https://github.com/lovebai/toalist。文中配图已去除站点叠加水印与推广信息;版权归原作者所有。

Last modification:November 12, 2026
如果觉得我的文章对你有用,请随意赞赏