文章摘要
这篇文章介绍了如何使用Python语言将图片上传到七牛云对象存储中。主要内容包括:使用七牛云提供的API实现图片的二进制数据上传,生成相应的HTTP请求头,并通过Typora编辑器设置相关参数。文章还提到七牛云免费提供10GB的存储额度,并通过命令行脚本展示了如何自动化图片上传过程。核心内容是Python代码实现的图片上传流程及七牛云对象存储的使用方法。
教程介绍
Python上传图片到七牛云储存代码,Typora将图片上传到七牛云对象存储中(访问速度快),七牛云免费10G。
Python代码分享
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | #!/usr/bin/env python3# -*- encoding: utf-8 -*-# author: gflik# data: 2022.10.09import uuidimport requestsimport sysfrom qiniu import Auth, put_file, etag, put_dataclass 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 – 文件 – 偏好设置 – 图像
1 | [img=110,0]https://attach.hu6.cc/forum/202211/18/015825cbh548j1wotw5wt1.png?l[/img] |
按照上述图片填入
© 版权声明
文章版权归作者所有,未经允许请勿转载。



