本教程旨在介绍如何使用七牛的Python SDK来快速地进行文件上传,下载,处理,管理等工作。
安装
首先,要使用Python的SDK必须要先安装。七牛的Python SDK是开源的,托管在Github上面,项目地址为https://github.com/qiniu/python-sdk。
安装的方式可以如项目的说明上所说,用pip install qiniu。当然也可以直接clone一份源代码下来直接使用。我一般喜欢直接clone源代码,这样的话,如果要对SDK做一些改动也是十分容易的。
最新版本的Python SDK需要依赖requests库,所以要提前安装好。安装方式当然也可以用pip install requests。
开发环境
Python的开发环境有很多种选择,如果喜欢文本的方式,比如vim,emacs,sublime text等都是很好的选择,如果你喜欢IDE,那么最流行的莫过于PyCharm了。PyCharm的最新版本到这里下载。
Access Key和Secret Key
我们知道七牛云存储的权限校验机制基于一对密钥,分别称为Access Key和Secret Key。其中Access Key是公钥,Secret Key是私钥。这一对密钥可以从七牛的后台获取。
小试牛刀
好了,做了上面的这些准备工作,我们就去上传一个简单的文件,练练手。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
#coding=utf-8
__author__ = 'jemy'
'''
本例演示了一个简单的文件上传。
这个例子里面,sdk根据文件的大小选择是Form方式上传还是分片上传。
'''
import qiniu
accessKey = "<Your Access Key>"
secretKey = "<Your Secret Key>"
#解析结果
def parseRet(retData, respInfo):
if retData ! = None :
print ( "Upload file success!" )
print ( "Hash: " + retData[ "hash" ])
print ( "Key: " + retData[ "key" ])
#检查扩展参数
for k, v in retData.items():
if k[: 2 ] = = "x:" :
print (k + ":" + v)
#检查其他参数
for k, v in retData.items():
if k[: 2 ] = = "x:" or k = = "hash" or k = = "key" :
continue
else :
print (k + ":" + str (v))
else :
print ( "Upload file failed!" )
print ( "Error: " + respInfo.text_body)
#无key上传,http请求中不指定key参数
def upload_without_key(bucket, filePath):
#生成上传凭证
auth = qiniu.Auth(accessKey, secretKey)
upToken = auth.upload_token(bucket, key = None )
#上传文件
retData, respInfo = qiniu.put_file(upToken, None , filePath)
#解析结果
parseRet(retData, respInfo)
def main():
bucket = "if-pbl"
filePath = "/Users/jemy/Documents/jemy.png"
upload_without_key(bucket, filePath)
if __name__ = = "__main__" :
main()
|
运行结果为:
1
2
3
|
Upload file success!
Hash: Fp0XR6tM4yZmeiKXw7eZzmeyYsq8
Key: Fp0XR6tM4yZmeiKXw7eZzmeyYsq8
|
从上面我们可以看到,使用七牛的Python SDK上传文件的最基本的步骤是:
- 生成上传凭证
- 上传文件
- 解析回复结果
小结
综上所述,其实使用七牛的SDK来上传文件还是很简单的,接下来的教程,我们将在这个例子的基础上逐步了解更多关于文件上传的知识。