教程介绍
Python上传图片到七牛云储存代码,Typora将图片上传到七牛云对象存储中(访问速度快),七牛云免费10G。
Python代码分享
#!/usr/bin/env python3 # -*- encoding: utf-8 -*- # author: gflik # data: 2022.10.09 import uuid import requests import sys from qiniu import Auth, put_file, etag, put_data class UploadClient: def __init__(self): # 需要修改一下两行! access_key="access_key" secret_key="secret_key" # 构建鉴权对象 self.auth= Auth(access_key, secret_key) self.bucket_name="82coco" def upload(self,data): """ 上传二进制数据到七牛云 :param data: 二进制数据 :return: """ # 上传后保存的文件名 # 如果不指定保存的文件名称,七牛云会自动生成一个唯一的图片名称 # 哈希值 key = 'markdown_img/{}.png'.format(str(uuid.uuid4()).replace("-","")) # 生成上传 Token,可以指定过期时间等 3600单位是s token = self.auth.upload_token(self.bucket_name, key, 3600 * 24) # 要上传文件的本地路径 # 将图片二进制数据上传到七牛云 ret, info = put_data(token, key, data) # print(ret) # print(info) if info.status_code == 200: # 上传图片成功 # 拼接完整url地址 full_url = "http://cdn.82coco.cn/"+ ret["key"] return full_url else: # 封装好的工具类异常需要抛出,不能私自解决异常 否则外界调用遇到异常没法解决 raise Exception(info.exception) def upload_img(self,file_list:list): for img in file_list: # 先判断传过来的是本地路径还是远程图片地址 if "http" == img[:4]: # 非本地图片的话可以考虑下载到本地再上传,但是没这个必要 print(img) continue else: try: print(self.upload(open(img,"rb"))) except: print(img + "\t上传失败") if __name__ == '__main__': if len(sys.argv) < 2: print("call error,wrong image format") sys.exit(1) # print(sys.argv) client=UploadClient() client.upload_img(sys.argv[1:])
使用方法
将此代码解压放入Typora根目录
打开代码修改accesskey 与 secretkey(需注册七牛云账号)
打开Typora - 文件 - 偏好设置 - 图像
[img=110,0]https://attach.wdzzz.com/forum/202211/18/015825cbh548j1wotw5wt1.png?l[/img]
按照上述图片填入