文章摘要
本文介绍了如何使用Python代码批量上传图片到七牛云对象存储中,七牛云免费提供10GB的存储服务。代码中定义了一个`UploadClient`类,用于处理图片上传逻辑,包括生成上传令牌、处理二进制数据上传以及上传失败的异常处理。此外,教程还详细说明了如何在Typora中解压代码、设置七牛云访问权限,并提供了图片偏好设置的示例链接。需要注意的是,用户需要注册七牛云账号并设置访问密钥。该教程适合需要高效批量上传图片的用户,提供了一种便捷的解决方案。
教程介绍
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] |
按照上述图片填入
© 版权声明
文章版权归作者所有,未经允许请勿转载。