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

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

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.

相关推荐
热点推荐
投毒杀人者、 三体公司原CEO许垚被执行死刑:他使用了见效更快、毒性更强的毒剂

投毒杀人者、 三体公司原CEO许垚被执行死刑:他使用了见效更快、毒性更强的毒剂

志云说
2026-05-26 13:05:30
23岁郑钦文遭一轮游,整个人老态尽显!掉到117名,商业价值暴跌

23岁郑钦文遭一轮游,整个人老态尽显!掉到117名,商业价值暴跌

阿废冷眼观察所
2026-05-26 15:15:53
国宴上桌,高层调研:一家民企密集被“看见”,什么信号?

国宴上桌,高层调研:一家民企密集被“看见”,什么信号?

智谷趋势
2026-05-20 17:04:05
霍去病啊,这人,说白了就是老天爷临时下凡一趟

霍去病啊,这人,说白了就是老天爷临时下凡一趟

老达子
2026-05-25 06:25:03
当具身智能开始进厂,资本在押注什么?

当具身智能开始进厂,资本在押注什么?

36氪
2026-05-26 18:46:37
第三轮第六批中央生态环境保护督察公布广东广西两省区典型案例

第三轮第六批中央生态环境保护督察公布广东广西两省区典型案例

新京报
2026-05-26 10:14:20
小学生大巴车在高速上出问题,老师让男生留在车上,让女生搭车离开

小学生大巴车在高速上出问题,老师让男生留在车上,让女生搭车离开

可达鸭面面观
2026-05-26 18:25:56
套牢盘100%,今日最惨股,才上市3天就跌去60%,这2只新股怎么了

套牢盘100%,今日最惨股,才上市3天就跌去60%,这2只新股怎么了

丁丁鲤史纪
2026-05-26 16:31:27
安静了,没人讲韬(套、逃)定律了……

安静了,没人讲韬(套、逃)定律了……

海右那人
2026-05-26 12:57:40
不用3nm照样封神!麒麟9050性能超越A18:3D堆叠绕开制程封锁

不用3nm照样封神!麒麟9050性能超越A18:3D堆叠绕开制程封锁

快科技
2026-05-26 11:37:30
武契奇前脚离开,后面塞尔维亚就乱了

武契奇前脚离开,后面塞尔维亚就乱了

凤眼论
2026-05-26 14:16:31
一只私募产品净值亏到仅剩0.002元,怎么做到的?

一只私募产品净值亏到仅剩0.002元,怎么做到的?

财联社
2026-05-26 15:56:19
尴尬!广东一业主因邻居大姐房事声音过大不堪其扰,声称要去录音

尴尬!广东一业主因邻居大姐房事声音过大不堪其扰,声称要去录音

火山詩话
2026-05-26 06:21:30
热!广东高“炎”值闷热天还要多久?

热!广东高“炎”值闷热天还要多久?

广东天气
2026-05-26 14:31:22
闹大了!庾澄庆不满自己被淘汰,公开内涵《歌手》节目组

闹大了!庾澄庆不满自己被淘汰,公开内涵《歌手》节目组

八卦南风
2026-05-26 12:02:25
53岁袁立病房照曝光!钱再多有什么用?她给所有中年女人提了个醒

53岁袁立病房照曝光!钱再多有什么用?她给所有中年女人提了个醒

文刀贰
2026-05-24 21:21:45
A股市值“一哥”再度易主,建设银行2.7万亿登顶

A股市值“一哥”再度易主,建设银行2.7万亿登顶

界面新闻
2026-05-26 17:45:19
“足疗第一股”要来了?知名连锁足疗巨头,启动IPO!20~30岁的年轻人成消费主力,00后已加入“按脚大军”

“足疗第一股”要来了?知名连锁足疗巨头,启动IPO!20~30岁的年轻人成消费主力,00后已加入“按脚大军”

每日经济新闻
2026-05-26 14:50:53
中国正式向世界宣告二件大事、一起来看看,太棒了!

中国正式向世界宣告二件大事、一起来看看,太棒了!

Thurman在昆明
2026-05-26 10:54:46
不到三年,他说这样的事情发生了七次,最近这次,孩子吓坏了,他也吓坏了

不到三年,他说这样的事情发生了七次,最近这次,孩子吓坏了,他也吓坏了

北青网-北京青年报
2026-05-26 12:03:39
2026-05-26 19:16:49
了不起的程序员 incentive-icons
了不起的程序员
平凡的人也能做了不起的事
579文章数 1686关注度
往期回顾 全部

科技要闻

中国AI要向外卷,而不只是做第二个OpenAI

头条要闻

25岁海归男恋上32岁离异女 因88.8万彩礼闹掰追讨12万

头条要闻

25岁海归男恋上32岁离异女 因88.8万彩礼闹掰追讨12万

体育要闻

上赛季差点降入英甲,下赛季要踢英超了

娱乐要闻

台媒贴脸!S妈被问大S嗑药当场沉默

财经要闻

中国铝行业爆单 下一个“煤炭”大周期?

汽车要闻

涉水加强 福特烈马亚马逊限量版上市 售价39.98万

态度原创

教育
数码
时尚
本地
艺术

教育要闻

工科三巨头:电子信息、计算机、电气,普通家庭到底怎么选才不亏

数码要闻

618消费观察:当“情价比”取代性价比,怎样的电视正在被买走?

全网刷屏,华语乐坛“嫡长女”终于来了!

本地新闻

用云锦的方式,打开江苏南京

艺术要闻

中国之美,美到极致!

无障碍浏览 进入关怀版