python教程

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

我的站长站 2022-11-19 人阅读

教程介绍

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]

按照上述图片填入

相关推荐
  • 七牛云
  • 帝国CMS七牛云同步、上传删除插件
    帝国CMS七牛云同步、上传删除插件

    插件说明适用版本帝国CMS7.5版本,UTF-8版本,其他版本请自行转码或移植。插件安装教程1、将shu文件夹上传至网站e目录。最终目录为:/e/shu/Qiniu/ 2、系统->扩展菜单分类名称:七牛云菜单名称:配置管理...

    帝国cms插件 1564 4年前
  • 七牛云生成各种尺寸样式图片缩略图教程
    七牛云生成各种尺寸样式图片缩略图教程

    我们博客网站在首页或分类列表页或其他地方或多或少都会用到缩略图,大多数都是通过timthumb.php来实现自动裁剪功能,但是这种方法裁剪的缩略图显示不太稳定,有些博客三天两头就看不到缩略图,原因有很...

    经验分享 629 4年前
  • PHP批量删除七牛云空间所有文件
    PHP批量删除七牛云空间所有文件

    七牛的云存储官方并没有提供批量删除空间文件的功能,很是不方便,可以利用根据七牛云SDK写的一个简单PHP程序,批量删除文件。delete.php需要修改的部分:<?phpecho &#39;<meta http-equiv="Content-Ty...

    php教程 76 3年前
最新更新