换了个图床,PicGo 列表里却没有?我用「自定义 Web 图床」硬接了一晚上
周三晚上我打算给写作那台电脑换个图源。装好 PicGo、打开图床列表,从上滑到下,愣是没找到我要用的那个。
网上的教程基本都停在一句「选自定义 Web 图床就行」,然后就没下文了。可配置页上那几个框——什么 API 地址、参数名、JSON 路径——对没怎么碰过后端的人来说,跟天书一样。我硬着头皮折腾了一晚上,从一开始的乱填,到后来学会先用 curl 试,总算把它彻底理顺。把过程写下来,省得你们再走一遍弯路。
第一阶段:凭感觉填,结果全军覆没
我最开始想当然地把图床的官网首页地址粘进了「API 地址」,文件字段名随便填了个 image,点上传——进度条转了两圈,甩给我一个 404,偶尔还返回一大段 HTML 网页源码。
我当时还纳闷:网址在浏览器里明明能打开,怎么到 PicGo 这就不行了?
后来才明白,能打开的是给人看的网站首页,而上传要打的是专门接收文件的接口地址,这俩压根不是一回事。很多服务的官网域名和上传接口域名都不一样,一开始我还以为是自己抄错了。
第二阶段:搞懂它到底在干嘛
卡了快一个小时,我停下来去翻了翻 web-uploader 这个插件到底干了啥,才反应过来:PicGo 说白了就是个上传客户端,列表里那些内置图床,只是官方提前帮你把各家的接口填好了。
「自定义 Web 图床」让你做的,其实就是亲手描述一次最普通的 HTTP 文件上传,回答三个问题:
- 请求发到哪个地址;
- 文件放在表单里的哪个字段名下;
- 服务器回传的那段 JSON 里,图片链接藏在哪个字段。
想通这一层,后面的几个框一下子就不神秘了。
第三阶段:装插件、重启
在「插件设置」里搜 web-uploader,装上、重启 PicGo,图床列表里就多出了「自定义 Web」。
对,一定要重启。我第一次装完没重启,在列表里翻来翻去找不到,差点以为插件坏了,这是当晚第一个纯浪费时间的坑。
第四阶段:不再瞎猜,先用 curl 打一次
真正让我开窍的是这一步:我没有再在 PicGo 里反复试,而是打开终端,用 curl 手动把接口打了一次:
curl -X POST "https://<你的图床上传接口地址>" \
-F "file=@/path/to/test.png" \
-F "uid=你的token"
就这么一行,比我在图形界面里瞎点半小时都管用:
- 回 404,说明地址没填全,去文档里把路径补完整;
- 回 400,说明文件字段名不对,把 file 换成 image 之类再试;
- 回 401,说明身份标识没带对;
- 一旦返回了正常的 JSON,我直接照着它读——文件字段名是什么、图片链接在第几层,几个参数当场全定了。
第五阶段:剩下的几个坑,挨个踩平
接口通了之后,我又零零碎碎踩了几个坑,都挺典型:
- 401 鉴权失败:我把 token 当成请求头(Header)去填,其实服务端要的是表单 Body 里的一个字段,形如
{"uid":"你的token"},放错位置它就找不到; - 上传成功,链接却是 undefined:这是 JSON 路径填浅了。返回的链接在
data.url里,我只填了url,PicGo 取不到东西。按返回 JSON 的层级一层层填准就好; - 参数全对却怎么都不生效:这是最磨人的一个——原来是我改的那份配置没「设为默认图床」,而且列表里还躺着一份重名的旧配置,实际生效的是另一份。删掉旧的、重建一份、设为默认、再重启,终于正常。
配通之后:接回写作工具
图床一通,后面就是熟悉的味道了:PicGo 常驻后台,截图后自动上传、链接自动进剪贴板,写东西时直接 cmd+V 就是一张图。
我在 Typora 里把「偏好设置 → 图像」的上传服务指到 PicGo,截图即传这条链路就闭环了,当初怎么配的可以看这篇:用 Typora 写博客三年,插图终于从「五步法」变成了一次粘贴。Obsidian 那边我用的是另一个插件,思路差不多:用 Obsidian 记了两年笔记,我终于让图片不再堆进同步盘。
我自己的图源最后固定在了图床小镇,它的自定义 Web 图床就是标准几个参数,文档里写得挺直白:文件字段名是 file、链接取 url 字段、需要身份标识时在 Body 里带 {"uid":"你的token"};再就是它官网域名和上传接口域名不一样,别像我一开始那样把官网首页填进去。
一晚上下来,我总结了三句话
- 「自定义 Web 图床」不是玄学,它只是让你描述一次普通的 HTTP 文件上传;
- API 地址要填上传接口、不是网站首页,字段名和 JSON 路径一切以服务器实际返回为准;
- 拿不准就先在终端用 curl 打一次,比在界面里瞎猜快得多。
希望你们配的时候,能比我少花点时间。
浙公网安备 33010602011771号