本教程旨在介绍如何使用七牛的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是私钥。这一对密钥可以从七牛的后台获取。
小试牛刀
好了,做了上面的这些准备工作,我们就去上传一个简单的文件,练练手。
#coding=utf-8__author__ = 'jemy''''本例演示了一个简单的文件上传。这个例子里面,sdk根据文件的大小选择是form方式上传还是分片上传。'''import qiniuaccesskey = secretkey = #解析结果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()
运行结果为:
upload file success!hash: fp0xr6tm4yzmeikxw7ezzmeyysq8key: fp0xr6tm4yzmeikxw7ezzmeyysq8
从上面我们可以看到,使用七牛的python sdk上传文件的最基本的步骤是:
生成上传凭证 上传文件 解析回复结果小结
综上所述,其实使用七牛的sdk来上传文件还是很简单的,接下来的教程,我们将在这个例子的基础上逐步了解更多关于文件上传的知识。