原文链接: http://blog.fenlanli.com/articles/2019/09/08/1567943775791.html
前期准备
注册七牛云账号,官网地址点这里。
注册之后需要完成实名认证。
点击左侧边栏对象存储,创建存储空间,存储空间名称即bucket_name, 上传文件会使用到。
创建完成后查看空间域名,右侧S3域名标题下的空间域名即上传和访问使用到的domain。
找到个人中心->秘钥管理, 记录上传需要使用到的access_key和secret_key。
安装模块
官方提供了模块,使用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)
个人博客地址http://blog.fenlanli.com