微信公众号上传GitHub图片失败

微信公众号编辑器出了名的难用,比如不支持MarkDown。为了节约生命,个人习惯在doocs/md中编辑排版,再一键拷贝到微信编辑器中即可,这一步的效率算是解决了。但还有个问题是,编辑器原本支持将文本中图片自动上传到微信服务器,但对于GitHub图床的图片却提示失败。既然绕不开使用微信编辑器,就需要解决该问题,这里描述下我的解决办法。

https://static.1991421.cn/2022/2022-07-01-233749.jpeg

失败原因

先说为什么会上传失败。

首先上传的原理是微信根据原图地址请求获取图片,进而存储到自己的图床,这里如果服务本身与user-images.githubusercontent.com网络不通自然也就有这个问题。比如微信服务器没有外网访问能力等。具体就不好说了,但必然是网络限制。

解决办法

既然是网络限制,解决办法也就是提供代理服务,确保微信服务可以访问,同时也可以正常进行外网访问即user-images.githubusercontent.com。这里我尝试使用国内云厂商的香港区服务器搭建代理服务,然后将原本文章中的GitHub图片链接批量更换域名到我的代理服务域名下,之后拷贝到微信编辑器后会发现可以正常上传了。

代理配置

这里贴下代理服务搭建配置,如下为nginx配置,HTTP应该也可以,可以自行尝试。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 443 ssl http2;
server_name githubusercontent.xxx.cn; # your domain name

ssl_certificate /etc/letsencrypt/live/githubusercontent.xxx.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/githubusercontent.xxx.cn/privkey.pem;

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

location / {
proxy_pass https://user-images.githubusercontent.com;
}
}

效率更进一步

每次手动在编辑器替换多处域名较为麻烦,如果是Alfred用户,可以创建一个workflow,这样选中整个文本,一键更新GitHub图片地址到代理服务新地址下。

https://static.1991421.cn/2022/2022-07-02-000205.jpeg

写在最后

如上解决后,就可以MD编写文章=>一键更新链接到代理服务地址下=>一键拷贝到微信编辑器同时成功上传图片了。OK不?