首先,我们从微信公众号开发文档里可以到接口地址,以及参数
获取access token https 请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 返回值{"access_token":"ACCESS_TOKEN","expires_in":7200}
下面,我们用python来实现一下, 我这里,建了一个UploadPic 类,定义了一个getAccessToken函数,用以获取access_token值,这个值我们下面需要用到
def __init__(self):
self.grant_type = "client_credential" #获取access_token填写client_credential
self.appid = "你自己的appid" #第三方用户唯一凭证
self.secret = "你自己的secret" #第三方用户唯一凭证密钥,即appsecret
self.type = "image" #媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)
self.media = "" #form-data中媒体文件标识,有filename、filelength、content-type等信息
def getAccessToken(self):
url = f"https://api.weixin.qq.com/cgi-bin/token?grant_type={self.grant_type}&appid={self.appid}&secret={self.secret}"
response = requests.get(url)
data = response.json()
access_token = data.get("access_token")
return access_token
调用接口,上传 http请求方式:POST/FORM, 使用https https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE
下面我们实现上传代码,并将获得文件上传后返回的地址,保存到output.txt文件中。
def upload(self):
token = self.getAccessToken()
url = f"https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token={token}"
#从wximages文件夹,获取文件名
image_folder = './images' # 替换为你的图片文件夹路径
files = {}
imageurls = ""
for filepath in glob.glob(os.path.join(image_folder, '*.png')):
filename = os.path.basename(filepath)
files = {f'media_{filename}': open(filepath, 'rb')}
response = requests.post(url, files=files)
data = response.json()
imageurl = data.get('url')
imageurls += imageurl+'\n'
with open("output.txt", 'w') as f:
f.write(imageurls)
print(f'Content written to output.txt successfully.')
注意: 微信公众号上传素材接口,用的上传永久素材,每次只能上传一个素材信息。