1. 什么是七牛云?
七牛云(Qiniu Cloud)是一家成立于 2011 年的云计算企业,总部位于中国杭州。七牛云主要提供云储存、内容分发(CDN)、数据处理等基础云服务和解决方案,以帮助企业节省底层资源建设、降低 IT 运营成本、提升业务应用效率和安全性。
1.1 七牛云的优势
相比于阿里云、腾讯云等大型云计算企业,七牛云最大的优势在于其极致的稳定性和高效性。七牛云的存储和处理速度非常快,可以满足大规模数据存储和访问的需求。此外,与其他云计算企业不同的是,七牛云不但提供了云存储和 CDN 服务,还提供了一整套数据处理、在线媒体等增值服务,以满足各种场景下的客户需求。
2. 七牛云的文件上传接口
在使用七牛云进行文件上传之前,我们需要先申请一个七牛云的账号,并在账号中心创建一个存储空间。创建存储空间之后,我们需要获取 API 密钥,即 Access Key 和 Secret Key,这两个密钥将用于后面的文件上传操作。
2.1 简单上传接口
在七牛云中,文件上传主要采用以下两种方式:
简单上传:将文件一次性上传到七牛云中。
分片上传:将文件分成若干个小块分别上传到七牛云中,然后再将这些小块合并成一个完整的文件。
在本文中,我们主要介绍简单上传接口的使用方法。以下是简单上传接口使用的 Python 代码:
import qiniu
access_key = 'your access_key'
secret_key = 'your secret_key'
bucket_name = 'your bucket_name'
q = qiniu.Auth(access_key, secret_key)
token = q.upload_token(bucket_name)
localfile = 'your local file path'
key = 'key of your file'
ret, info = qiniu.put_file(token, key, localfile)
if info.ok:
print('文件上传成功!')
else:
print('文件上传失败,错误信息:' + info.text_body)
在以上代码中,我们先使用 qiniu.Auth 方法生成一个授权对象 q,并调用其中的 upload_token 方法获取上传凭证 token,接着通过 qiniu.put_file 方法进行文件上传操作。如果上传成功,将会输出文件上传成功的消息;否则,将会输出上传失败的错误信息。
2.2 带回调业务处理的上传接口
除了简单上传接口,七牛云还提供了带回调业务处理的上传接口,该接口在文件上传完成之后会自动向业务服务器发送一个 HTTP 请求,以通知业务服务器文件上传已完成。以下是带回调业务处理的上传接口使用的 Python 代码:
import qiniu
access_key = 'your access_key'
secret_key = 'your secret_key'
bucket_name = 'your bucket_name'
callback_url = 'your callback_url'
q = qiniu.Auth(access_key, secret_key)
policy = {
'callbackUrl': callback_url
}
token = q.upload_token(bucket_name, None, 3600, policy)
localfile = 'your local file path'
key = 'key of your file'
ret, info = qiniu.put_file(token, key, localfile)
if info.ok:
print('文件上传成功!')
else:
print('文件上传失败,错误信息:' + info.text_body)
在以上代码中,我们新增了一个 policy 参数,用于传递回调业务处理的相关信息。其中,callbackUrl 指定了业务服务器的回调地址,七牛云在文件上传完成之后会通过该回调地址向业务服务器发送一个 HTTP 请求,以通知业务服务器文件上传已完成。
3. 七牛云上传文件示例
接下来,我们通过一个具体的上传文件示例来实现七牛云接口对接,并快速上传文件。
3.1 安装七牛云 Python SDK
在使用 Python 实现七牛云接口对接之前,我们需要先安装七牛云 Python SDK。可以通过以下命令进行安装:
!pip install qiniu
3.2 实现七牛云接口对接
以下是实现七牛云接口对接的 Python 代码:
import qiniu
import os
access_key = 'your access_key'
secret_key = 'your secret_key'
bucket_name = 'your bucket_name'
def upload_file_to_qiniu(qiniu_key, localfile_path):
"""上传文件到七牛云"""
q = qiniu.Auth(access_key, secret_key)
token = q.upload_token(bucket_name)
ret, info = qiniu.put_file(token, qiniu_key, localfile_path)
if info.ok:
return True, qiniu_key
else:
return False, info.text_body
if __name__ == '__main__':
"""上传文件到七牛云"""
localfile_path = 'your local file path'
qiniu_key = 'key of your file'
if not os.path.isfile(localfile_path):
print('文件不存在!')
else:
success, qiniu_key = upload_file_to_qiniu(qiniu_key, localfile_path)
if success:
print('文件上传成功!保存的文件名为:', qiniu_key)
else:
print('文件上传失败,错误信息:', qiniu_key)
以上代码实现了上传本地文件到七牛云的功能。在函数 upload_file_to_qiniu 中,我们传入了两个参数:qiniu_key 和 localfile_path,其中,qiniu_key 为文件在七牛云中的保存路径,localfile_path 为本地文件的路径。该函数使用 qiniu.Auth 方法获取授权对象 q,并调用其中的 upload_token 方法获取上传凭证 token,接着通过 qiniu.put_file 方法进行文件上传操作。如果上传成功,将返回 True 和文件名 qiniu_key;否则,将返回 False 和错误信息。
3.3 调用上传文件示例
我们可以通过以下代码调用上传文件示例:
if __name__ == '__main__':
"""上传文件到七牛云"""
localfile_path = './test.jpg'
qiniu_key = 'test.jpg'
if not os.path.isfile(localfile_path):
print('文件不存在!')
else:
success, qiniu_key = upload_file_to_qiniu(qiniu_key, localfile_path)
if success:
print('文件上传成功!保存的文件名为:', qiniu_key)
else:
print('文件上传失败,错误信息:', qiniu_key)
以上代码表示上传本地文件 test.jpg 到七牛云中,并将其保存为 test.jpg 文件名。如果上传成功,将会输出文件上传成功的消息,并显示文件名为 test.jpg;否则,将会输出上传失败的错误信息。
4. 总结
本文主要介绍了七牛云的文件上传接口,并通过 Python 实现了上传本地文件到七牛云的示例。在实现过程中,我们使用了七牛云 Python SDK,并对简单上传和带回调业务处理的上传接口进行了详细的介绍。希望本文能够帮助大家更好地了解七牛云的文件上传接口,并使用 Python 实现相关功能。