网易首页 > 网易号 > 正文 申请入驻

利用微信公众号的图片上传接口,创造属于自己的图床功能!

0
分享至

每天早上七点三十,准时推送干货

由于公众号改版,为了不错过精彩内容,大家一定要把我们星标哦!

作为一个技术博主,了不起不是在创作就是在创作的路上(当然偶尔也会有点恰饭文~还指望大家多多支持),特别是在写一些技术文章的时候,经常会用到图片,然而为了在多个平台同步发文,就需要使用图床了。

之前了不起用的是微博的图床,可是今年年初的时候,突然发现用不了了,没办法毕竟是免费的,不稳定不能用也很正常,了不起只能再想想其他办法了。

Typora 配置

后面一想既然是为了写公众号,那可以将图片直接上传的公众号的素材库呀,因为日常写作的软件用的Typora看了图片设置这里,之前用的是iPic, 现在可以选择Custom Command,通过执行一个脚本来进行文件的上传。

根据官方文档,我们可以看到,只要按照下面的样式进行输出上传后的图片地址,Typora就可以获取到图片上传的地址,并进行替换。所以我们要做的就是将图片进行上传,然后输出这种格式的内容就可以了。

Upload Success:
http://remote-image-1.png
http://remote-image-2.png
脚本开发

在编写脚本之前,我们需要先获取到公众号的AppIDAppSecret,以及对应的接口地址,AppIDAppSecret在公众号后台的基本配置模块可以看到,首次进入的时候需要开启一下。

注意:公众号现在不再保存AppIDAppSecret,我们要记得复制保存下来,不然忘记的话就只能重置了。

然后通过微信的开放文档,我们可以看到我们需要的两个接口,一个是获取access_token的接口,一个是上传图片的接口。对应的接口分别是

获取access_token的地址:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

上传图片的地址:https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN

接下来我们就是真正的编写脚本了,了不起这里是通过Go语言来编写的脚本,短短的几十行就够了,完整的代码如下

package main

import (
"encoding/json"
"fmt"
"github.com/asmcos/requests"
"os"
)
# 替换成自己的 AppID 和 AppSecret
const AppID = ""
const AppSecret = ""

const ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + AppID + "&secret=" + AppSecret
const UPLOAD_IMAGE_URL = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token="

type Response struct {
Access_token string
Expires_in string
Url string
}

func main() {

// 请求 access_token
req := requests.Requests()
resp, _ := req.Get(ACCESS_TOKEN_URL)
//req.Debug = 1
var res Response
b := []byte(resp.Text())
err := json.Unmarshal(b, &res)
if err != nil {
//println(err)
}
var accessToken = res.Access_token
//println(accessToken)

// 获取命令行参数
if accessToken != "" {
var urls []string
for k, v := range os.Args {
// 上传图片
if k != 0 {
data := requests.Datas{
"type": "image",
}
files := requests.Files{
"media": v,
}
uploadReq := requests.Requests()
//uploadReq.Debug = 1
uploadReq.Header.Set("Content-Type", "multipart/form-data")
resp2, _ := uploadReq.Post(UPLOAD_IMAGE_URL+accessToken+"&type=image", data, files)
var resUrl Response
url := []byte(resp2.Text())
json.Unmarshal(url, &resUrl)
//println(resUrl.Url)
urls = append(urls, resUrl.Url)
}
}
if len(urls) > 0 {
println("Upload Success:")
for i := range urls {
fmt.Println(urls[i])
}
}
} else {
println(resp.Text())
}
}

编写完了过后,我们通过go build命令,打包一个可执行文件出来,然后在Typora里面配置上可执行文件的路径即可,如下所示。

然后我们可以点击Test Uploader来测试我们的脚本有没有问题,如果脚本有问题这里会显示上传失败,正常的话返回成功。

如果小伙伴跟着操作到了这里,那么可以肯定,你这里一定是失败的,失败的原因不是脚本有问题,而是因为没有将外网IP配置到公众号的IP白名单中。

我们将错误信息中的IP添加到公众号后台的IP白名单里面,配置的地方也在基本配置那块,添加的时候管理员扫码确认即可。

接下来再次测试,可以看到上传结果是成功的了。

原本事情到这里已经很完美了,可以愉快的写代码并且还可以有自己的图床可以用,爽歪歪。

然而当以为一切都很完美的时候,不完美的地方又来了,那就是如果我们把写好的包含上传到图床和替换好了图片链接的文章复制到一些其他平台的时候,很不幸出现了下面的情况,公众号的图片不可以被引用。

看到这里的小伙伴是不是都想骂人了,搞了半天这不还是不能用么,其实这个问题主要是因为公众号对于来源的站点根据请求referer属性做了限制而已,我们可以通过安装一个Chrome浏览器插件Referer Control来控制,只要在插件里面配置好禁止referer的站点就好了。

在左侧填入你不能获取公众号图片的平台域名,然后回车,在右侧选择Block,然后再回去刷新平台,不出意外的这次真没有意外了,可以看到图片了。

今天了不起给大家介绍了一种自建图床的方法,当然如果有不差钱的大佬可以使用云厂商提供的OSS存储,没必要这样折腾,如果喜欢折腾的小伙伴也可以按照文章的方式来玩一玩。

不过这种方式有个缺点就是个人电脑的外网IP会经常变化,这就会导致我们偶尔会上传不成功,上传不成功的时候我们就需要将最新的IP更新进公众号后台的IP白名单中。

Java 极客技术微信群中有很多优秀的小伙伴在讨论技术,偶尔还有不定期的资料分享和红包发放!如果你想提升自己,并且想和优秀的人一起进步,感兴趣的朋友,可以在下方公众号后台回复:666

喜欢就分享

认同就点赞

支持就在看

一键四连,你的offer也四连

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
奥沙利文:我又犯病了!9月连退两赛,常冰玉直言和他比赛是享受

奥沙利文:我又犯病了!9月连退两赛,常冰玉直言和他比赛是享受

排球黄金眼
2026-08-29 05:54:39
十年恩怨未了,王小川怒斥孙宇晨:骗子只是无信,无情无义就是大魔头了

十年恩怨未了,王小川怒斥孙宇晨:骗子只是无信,无情无义就是大魔头了

超角度
2026-08-29 11:58:51
国家卫健委:2025年中国新生儿792万

国家卫健委:2025年中国新生儿792万

蓬勃新闻
2026-08-28 16:08:14
网传江苏教育已经内卷到令人惊悚的地步,到底真假?

网传江苏教育已经内卷到令人惊悚的地步,到底真假?

慧翔百科
2026-08-27 17:41:27
“第一千金”密访北京!一天连见两位中国高层,要敲定三件大事!

“第一千金”密访北京!一天连见两位中国高层,要敲定三件大事!

古史青云啊
2026-08-29 11:44:04
罗永浩“开撕”某汽车大V!

罗永浩“开撕”某汽车大V!

电动内参
2026-08-27 20:41:28
风水先生:客厅这处位置,千万别久坐,耗气破财,任何人坐都不利

风水先生:客厅这处位置,千万别久坐,耗气破财,任何人坐都不利

第四思维
2025-08-13 12:58:34
河北康保1.1万亩白菜趴地里,农户:谈定金时消息曝光,商贩转身全走了;政府人员:“甲醛白菜”系外地采购商所为,与本地菜农无关

河北康保1.1万亩白菜趴地里,农户:谈定金时消息曝光,商贩转身全走了;政府人员:“甲醛白菜”系外地采购商所为,与本地菜农无关

大风新闻
2026-08-27 21:37:29
3亿灵活就业人群,他们的子女以后怎么办?

3亿灵活就业人群,他们的子女以后怎么办?

黑噪音
2026-08-26 22:40:20
1.4亿欧重磅转会!恩佐告别切尔西加盟曼城,签下7年长约

1.4亿欧重磅转会!恩佐告别切尔西加盟曼城,签下7年长约

爱的境界是心疼
2026-08-28 09:27:33
韩国女足名将池笑然不满裁判,当值主裁赛中问其“是否来例假”

韩国女足名将池笑然不满裁判,当值主裁赛中问其“是否来例假”

懂球帝
2026-08-28 22:43:06
西部战区空军无人机侦察灾情,回传重要画面

西部战区空军无人机侦察灾情,回传重要画面

政知新媒体
2026-08-28 19:49:32
宇树,一个被严重高估的“早产儿”

宇树,一个被严重高估的“早产儿”

功夫财经
2026-08-29 09:09:27
王毅的印尼之行,百忙中专门见了一人,给“镍矿风波”正式收了尾

王毅的印尼之行,百忙中专门见了一人,给“镍矿风波”正式收了尾

司马平邦
2026-08-28 09:48:53
不可思议啊!广东小伙在健身房被骚扰报警,起因是一少妇持续纠缠他,并索要其拖鞋

不可思议啊!广东小伙在健身房被骚扰报警,起因是一少妇持续纠缠他,并索要其拖鞋

火山詩话
2026-08-28 19:31:54
认真评价:孙宇晨这15页香艳文学,到底写得好不好?(含细节)

认真评价:孙宇晨这15页香艳文学,到底写得好不好?(含细节)

热辣茉莉说
2026-08-28 11:53:58
马云太“鸡贼”了!多年前恒大夺冠庆功宴照片再登热搜:举杯瞬间,马云留意许家印的动作,观察对方是否举杯饮酒

马云太“鸡贼”了!多年前恒大夺冠庆功宴照片再登热搜:举杯瞬间,马云留意许家印的动作,观察对方是否举杯饮酒

火山詩话
2026-08-23 07:03:56
县城女老师成为大龄剩女重灾区?网友:收入低,眼光高,缺少社会经验

县城女老师成为大龄剩女重灾区?网友:收入低,眼光高,缺少社会经验

带你感受人间冷暖
2026-08-24 00:12:17
我68岁,大病一场彻底醒悟:钱宁可烂在银行,也绝不全补贴儿子

我68岁,大病一场彻底醒悟:钱宁可烂在银行,也绝不全补贴儿子

匹夫来搞笑
2026-07-24 14:32:50
美国网红小唐酱香饼的瓜:从二手车坑同胞到假牙膏割粉丝

美国网红小唐酱香饼的瓜:从二手车坑同胞到假牙膏割粉丝

杭城村叔
2026-08-25 09:02:17
2026-08-29 12:36:49
了不起的程序员 incentive-icons
了不起的程序员
平凡的人也能做了不起的事
579文章数 1686关注度
往期回顾 全部

科技要闻

美团扭亏为盈后,外卖大战结束了吗?

头条要闻

父亲自驾上万公里送娃上学:女儿去黑龙江 儿子去新疆

头条要闻

父亲自驾上万公里送娃上学:女儿去黑龙江 儿子去新疆

体育要闻

曼城花1个亿,买下了摩洛哥的“国民女婿”

娱乐要闻

孙宇晨最新发声:惊扰景女士非本意

财经要闻

刑自强:AI投资下半场中国蓄势待发

汽车要闻

东风日产NX8“喜柿橙意”限定色正式上市

态度原创

游戏
手机
本地
公开课
军事航空

《GTA6》《罪恶都市》画面对比:24年后早已判若两城

手机要闻

消息称荣耀Magic9系列两款新机疑入网,9月底发布

本地新闻

昆明的雨,解锁汪曾祺的浪漫雨季

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

"中华第一舰"退出现役

无障碍浏览 进入关怀版