Python上传图片到七牛云储存代码

随心笔谈1年前 (2023)发布 admin
118 0

​教程介绍

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.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 – 文件 – 偏好设置 – 图像

1
[img=110,0]https://attach.hu6.cc/forum/202211/18/015825cbh548j1wotw5wt1.png?l[/img]

按照上述图片填入

© 版权声明

相关文章