python 七牛云 文件上传

前期准备

注册七牛云账号,官网地址点这里

注册之后需要完成实名认证。

点击左侧边栏对象存储,创建存储空间,存储空间名称即bucket_name, 上传文件会使用到。

image.png

创建完成后查看空间域名,右侧S3域名标题下的空间域名即上传和访问使用到的domain。

image.png

找到个人中心->秘钥管理, 记录上传需要使用到的access_key和secret_key。

image.png

安装模块

官方提供了模块,使用pip安装即可。 pip install qiniu

代码演示

from qiniu import Auth, put_data


class SevenCattle:
    """
    单例模式七牛云文件上传
    """
    __instance = None

    def __new__(cls, **kwargs):
        if not cls.__instance:
            cls.__instance = super().__new__(cls)
        return cls.__instance

    def __init__(self, **kwargs):
        """
        :param access_key:
        :param secret_key:
        :param domain:
        :param bucket_name:
        """
        need_key = ('access_key', 'secret_key', 'domain', 'bucket_name')
        for key in need_key:
            val = kwargs.get(key, None)
            if not val:
                raise ValueError('{} is necessary.'.format(key))
            setattr(self, key, val)

        self._q = Auth(self.access_key, self.secret_key)

    def upload(self, source_file_path, save_file_name):
        """
        :param source_file_path: 源文件路径
        :param save_file_name: 保存至七牛云的文件名
        :return:
        """
        token = self._q.upload_token(self.bucket_name, save_file_name)
        ret, info = put_data(token, source_file_path, save_file_name)
        if info.status_code == 200:
            return '/' . join([self.domain, save_file_name])
        return None


if __name__ == '__main__':
    config = {
        'access_key': 'xx',  # 填你的access_key
        'secret_key': 'xx',  # 填你的secret_key
        'bucket_name': 'xx',  # 填你的存储空间名称
        'domain': 'xxx.com'  # 填你的空间域名
    }
    seven_cattle = SevenCattle(**config)
    url = seven_cattle.upload('main.py', 'main.py')
    print(url)
发布了60 篇原创文章 · 获赞 0 · 访问量 1419

猜你喜欢

转载自blog.csdn.net/ClassmateLin/article/details/100636622