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

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

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.

相关推荐
热点推荐
姜萍取得的数学竞赛成绩有多牛?参赛选手:感到“非常震撼”

姜萍取得的数学竞赛成绩有多牛?参赛选手:感到“非常震撼”

极目新闻
2024-06-15 13:20:21
杰伦格林从不邀请伊森与小贾训练,诠释火箭或出现不稳定性!

杰伦格林从不邀请伊森与小贾训练,诠释火箭或出现不稳定性!

室内设计师阿喇
2024-06-16 09:18:14
湖北一地两人被查

湖北一地两人被查

鲁中晨报
2024-06-15 17:03:02
还剩7000亿余额,美联储已破产,中国分批运回黄金,耶伦口风变了

还剩7000亿余额,美联储已破产,中国分批运回黄金,耶伦口风变了

柏树的笔
2024-06-15 11:36:42
李讷与父亲母亲弟弟合影

李讷与父亲母亲弟弟合影

华人星光
2024-06-13 14:13:09
广东娱乐圈位居全国倒数,广东网友:我们只痴迷我国的传统习俗

广东娱乐圈位居全国倒数,广东网友:我们只痴迷我国的传统习俗

综艺拼盘汇
2024-06-16 03:23:30
左小青罕带13岁女儿参加活动,被吐槽女儿颜值不随妈,颜值普通!

左小青罕带13岁女儿参加活动,被吐槽女儿颜值不随妈,颜值普通!

八卦爱侃娱
2024-06-16 10:34:57
郑恺一家三口韩国度假归来,辣妈苗苗秀小蛮腰,3岁女儿长相秀气

郑恺一家三口韩国度假归来,辣妈苗苗秀小蛮腰,3岁女儿长相秀气

娱絮
2024-06-13 16:35:19
北京,闫女士将房子以225万的价格卖给了大姑姐

北京,闫女士将房子以225万的价格卖给了大姑姐

小虎新车推荐员
2024-06-16 07:35:25
我的高中同学已有四人离世,每个人离开的方式都令人唏嘘!

我的高中同学已有四人离世,每个人离开的方式都令人唏嘘!

糖逗在娱乐
2024-06-16 07:10:12
银行女职员拍视频深情表白行长,行长误发工作群?评论笑不活!

银行女职员拍视频深情表白行长,行长误发工作群?评论笑不活!

王晓爱体彩
2024-06-16 00:17:04
组国家队?名记:猛龙正密切关注扎克-埃迪 如果掉到19顺位就会选

组国家队?名记:猛龙正密切关注扎克-埃迪 如果掉到19顺位就会选

直播吧
2024-06-16 09:14:06
1场3-2后,中国女排三重喜!坐6望4,日本告急,美国压哨晋级?

1场3-2后,中国女排三重喜!坐6望4,日本告急,美国压哨晋级?

刘姚尧的文字城堡
2024-06-16 06:19:20
17岁数学天才少女姜萍爆火的第2天,担忧的事发生了

17岁数学天才少女姜萍爆火的第2天,担忧的事发生了

解说阿洎
2024-06-15 11:15:13
魔笛创纪录一战太失望!9战大赛第3人,被过成木桩仅获6.3分

魔笛创纪录一战太失望!9战大赛第3人,被过成木桩仅获6.3分

奥拜尔
2024-06-16 01:40:16
官方回应:他俩均已离婚!

官方回应:他俩均已离婚!

沈阳地铁第一时间
2024-06-15 13:16:10
才两年!国产手机使用韩国OLED面板的比例从77.9%暴跌至16%

才两年!国产手机使用韩国OLED面板的比例从77.9%暴跌至16%

最潮家居评
2024-06-16 05:27:40
中超最新积分榜:国安遭绝杀排第5,河南队终结6轮不胜跳出降级区

中超最新积分榜:国安遭绝杀排第5,河南队终结6轮不胜跳出降级区

中超伪球迷
2024-06-15 22:15:52
网传武汉东湖学院女生要了30万后玩消失!男主满贴吧搜寻追讨…

网传武汉东湖学院女生要了30万后玩消失!男主满贴吧搜寻追讨…

火山诗话
2024-06-15 20:06:28
龙岩一地副市长调整

龙岩一地副市长调整

鲁中晨报
2024-06-15 12:07:05
2024-06-16 11:32:49
了不起的程序员
了不起的程序员
平凡的人也能做了不起的事
409文章数 1627关注度
往期回顾 全部

科技要闻

iPhone 16会杀死大模型APP吗?

头条要闻

40余套房屋涉嫌"一房多卖" 有购房者内心积郁因病去世

头条要闻

40余套房屋涉嫌"一房多卖" 有购房者内心积郁因病去世

体育要闻

没人永远年轻 但青春如此无敌还是离谱了些

娱乐要闻

江宏杰秀儿女刺青,不怕刺激福原爱?

财经要闻

打断妻子多根肋骨 上市公司创始人被公诉

汽车要闻

东风奕派eπ008售21.66万元 冰箱彩电都配齐

态度原创

健康
亲子
时尚
旅游
房产

晚餐不吃or吃七分饱,哪种更减肥?

亲子要闻

家庭教育争议:青春期孩子该如何管教?

中年女性还是穿连衣裙最有气质!裙摆过膝、腰部收紧,巨显瘦

旅游要闻

@毕业生,江苏这些景区可享免票或优惠

房产要闻

万华对面!海口今年首宗超百亩宅地,重磅挂出!

无障碍浏览 进入关怀版