七牛 上传下载SDK 封装

本文详细介绍了如何使用七牛云存储SDK进行文件上传和下载链接获取的过程,包括初始化客户端、设置上传Token、上传文件及获取下载链接等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from qiniu import Auth, put_file
from urllib import quote
from scripy.config.config import qiniu_conf


class QiniuCloud(object):
    url = 'xxxxxx'

    def __init__(self, access_key, secret_key, bucket, url=None):
        """

        :param access_key:
        :param secret_key:
        """
        self.access_key = access_key
        self.secret_key = secret_key
        self.bucket = bucket
        if url:
            self.url = url
        self.client = Auth(self.access_key, self.secret_key)

    def get_download_url(self, target_id):
        """
        获取七牛下载链接
        :param target_id:
        :return:
        """
        # 处理七牛特殊字符问题
        target_id = quote(target_id.encode('utf-8'))
        base_url = 'http://%s/%s' % (self.url, target_id)
        base_url = base_url.encode("utf-8")
        url = self.client.private_download_url(base_url, expires=3600)
        return unicode(url, 'utf-8')

      def upload_data(self, dir_path, **kwargs):
        """
        上传文件
        :param dir_path: 
        :param kwargs: 
        :return: 
        """
        file_name = dir_path.split("/")[-1]
        token = self.set_upload_token(key=file_name)
        ret, info = put_file(token, key=file_name, file_path=dir_path)
        if info.status_code != 200:
            logging.error(info.text_body)
            raise OSError
        download_url = self.get_download_url(file_name)
        if kwargs.get("is_delete"):
            os.remove(dir_path)

        return {
            "ok": True,
            "file_key": file_name,
            "url": download_url
        }

    def set_upload_token(self, **kwargs):
        """
        获取上传文件token
        :param kwargs: 
        :return: 
        """
        if kwargs.get('bucket'):
            self.bucket = kwargs.get('bucket')
        key = str(ObjectId())
        if kwargs.get("key"):
            key = kwargs.get("key")
        return self.client.upload_token(self.bucket, key)

    @classmethod
    def default_config(cls, qiniu_config=None):
        """
        默认配置
        :return:
        """
        if not qiniu_config:
            qiniu_config = qiniu_conf
        return cls(access_key=qiniu_config['access_key'],
                   secret_key=qiniu_config['secret_key'],
                   bucket=qiniu_config['bucket'],
                   url=qiniu_config['url'])
补充:根据图片url 下载图片方法
from urllib import urlretrieve
urlretrieve(img_url, download_path + "{}.jpg".format(img_name))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值