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

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

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.

相关推荐
热点推荐
大多数人一旦失业,手里如果有一两百万存款,第一件事竟是躺平

大多数人一旦失业,手里如果有一两百万存款,第一件事竟是躺平

木言观
2026-03-02 21:33:11
随着越南1-4,U20女足亚洲杯最新积分榜出炉:中国队领跑

随着越南1-4,U20女足亚洲杯最新积分榜出炉:中国队领跑

俯身冲顶
2026-04-04 22:56:23
美媒:美军两架搜救直升机被击中 无人受伤

美媒:美军两架搜救直升机被击中 无人受伤

新华社
2026-04-04 04:12:04
年终奖2箱零食我次日离职,年后老板助理:抱歉您的年终奖是28万

年终奖2箱零食我次日离职,年后老板助理:抱歉您的年终奖是28万

奶茶麦子
2026-04-04 23:50:12
李盈莹领衔,朱婷无缘,袁心玥回归,中国女排第二批集训名单预测

李盈莹领衔,朱婷无缘,袁心玥回归,中国女排第二批集训名单预测

跑者排球视角
2026-04-04 09:43:41
失业后在小县城的两年发现,打麻将和性生活才是普通人底色!

失业后在小县城的两年发现,打麻将和性生活才是普通人底色!

黯泉
2026-04-01 17:44:20
各国央行狂抛815亿,美债跌至十多年来最低,怪不得特朗普要停火

各国央行狂抛815亿,美债跌至十多年来最低,怪不得特朗普要停火

王墨观察
2026-04-04 18:30:03
你以为她是柔弱舞者?看到她健身照,网友:这反差我直接爱了!

你以为她是柔弱舞者?看到她健身照,网友:这反差我直接爱了!

跑步心情
2026-04-04 10:21:12
离谱绝杀!深圳104-103北控!里勒45分准绝杀被反杀,赛后这样说

离谱绝杀!深圳104-103北控!里勒45分准绝杀被反杀,赛后这样说

林子说事
2026-04-05 00:38:25
知名连锁餐饮门口宣传板写“3元自助早餐”,两人买单45元被告知“仅粥饮自助”

知名连锁餐饮门口宣传板写“3元自助早餐”,两人买单45元被告知“仅粥饮自助”

新闻晨报随申Hi
2026-04-02 18:36:05
西甲前瞻|马竞1-1巴萨:复仇巩固西甲还是留力欧冠,巴萨面临抉择

西甲前瞻|马竞1-1巴萨:复仇巩固西甲还是留力欧冠,巴萨面临抉择

体育世界
2026-04-04 16:11:29
“中国要被我们拖垮了!”24年,韩国掀起拒绝吃中国进口白菜浪潮

“中国要被我们拖垮了!”24年,韩国掀起拒绝吃中国进口白菜浪潮

扶苏聊历史
2026-01-23 10:28:26
打脸民进党!美药品关税优惠名单上没台湾名字,民代酸:人家只是口头安慰

打脸民进党!美药品关税优惠名单上没台湾名字,民代酸:人家只是口头安慰

海峡导报社
2026-04-03 16:21:04
日本和广东同为1.2亿人口,日本创造4.2万亿GDP,广东是多少?

日本和广东同为1.2亿人口,日本创造4.2万亿GDP,广东是多少?

丁丁鲤史纪
2026-04-02 16:50:55
郑丽文“一国两区”是比“一国两制”更宽松,还是变相“独台”?

郑丽文“一国两区”是比“一国两制”更宽松,还是变相“独台”?

取经的兵
2026-04-04 09:42:41
张雪:我们现在中国的车手跑不快,没有训练体系

张雪:我们现在中国的车手跑不快,没有训练体系

懂球帝
2026-04-04 16:07:05
《浪姐7》初舞台:王濛黑脸,阚清子一句话,撕碎倪萍最后的体面

《浪姐7》初舞台:王濛黑脸,阚清子一句话,撕碎倪萍最后的体面

秋姐居
2026-04-04 22:52:21
这家公司拟终止上市,4月7日起停牌

这家公司拟终止上市,4月7日起停牌

新浪财经
2026-04-04 12:31:25
开过电车再换油车才醒悟:普通家庭买车,实用远比面子重要

开过电车再换油车才醒悟:普通家庭买车,实用远比面子重要

复转这些年
2026-04-03 13:30:55
明朝大将蓝玉领大军把北元打得屁滚尿流,瞧见俘虏里有个异域美人

明朝大将蓝玉领大军把北元打得屁滚尿流,瞧见俘虏里有个异域美人

南权先生
2026-02-06 15:53:43
2026-04-05 03:35:00
了不起的程序员 incentive-icons
了不起的程序员
平凡的人也能做了不起的事
579文章数 1686关注度
往期回顾 全部

科技要闻

内存一年涨四倍!国产手机厂商集体涨价

头条要闻

伊朗发动第七轮导弹袭击 耶路撒冷拦截导弹升空

头条要闻

伊朗发动第七轮导弹袭击 耶路撒冷拦截导弹升空

体育要闻

刹不住的泰格·伍兹,口袋里的两粒药丸

娱乐要闻

Q女士反击,否认逼宋宁峰张婉婷离婚

财经要闻

中微董事长,给半导体泼点冷水

汽车要闻

17万级海豹07EV 不仅续航长还有9分钟满电的快乐

态度原创

健康
手机
教育
房产
公开课

干细胞抗衰4大误区,90%的人都中招

手机要闻

华为新机再曝,旗舰、阔折叠、常规折叠都有!

教育要闻

这些英国大学开始崩盘!

房产要闻

小阳春全面启动!现房,才是这波行情里最稳的上车票

公开课

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

无障碍浏览 进入关怀版