... QINIU
>>> import os
>>> BUCKET_PUBLIC = 'bucketcjpublic'
>>> ACCESS_KEY = os.getenv ( "QINIU_ACCESS_KEY" )
>>> SECRET_KEY = os.getenv ( "QINIU_SECRET_KEY" )
>>> from pdb import set_trace as bp
>>> import urllib
>>> import mimetypes
>>> import simplejson
>>> import libstorages
>>> import libstorages.qbox
>>> import libstorages.qbox.rs
>>> import libstorages.qbox.rscli
>>> import libstorages.qbox.uptoken
>>> import libstorages.qbox.digestoauth
>>> from StringIO import StringIO
>>> libstorages.qbox.config.ACCESS_KEY = ACCESS_KEY
>>> libstorages.qbox.config.SECRET_KEY = SECRET_KEY
>>> qn = libstorages.qbox.rs.Service ( libstorages.qbox.digestoauth.Client ( ),\
... "b" )
>>> qn.Mkbucket ( "bukaopu" )
True
>>> qn.Buckets ( )
[u'bukaopu']
>>>
添加的bucket暂时还没有删除的API.
>>> qn = libstorages.qbox.rs.Service ( libstorages.qbox.digestoauth.Client ( ),\
... BUCKET_PUBLIC )
>>> qn.Mkbucket ( BUCKET_PUBLIC )
True
以存在的文件会抛出异常。
>>> token = libstorages.qbox.uptoken.UploadToken ( BUCKET_PUBLIC ).\
... generate_token ( )
>>> upload_response = libstorages.qbox.rscli.UploadFile (\
... BUCKET_PUBLIC, 'requirements.txt', 'image/jpg', \
... 'requirements.txt', \
... '', '', token )
>>> upload_response = simplejson.loads ( upload_response )
>>> upload_response['hash']
u'FgC2TiaMDJQSxY9WSSsiLDokLT2B'
>>> upload_response = libstorages.qbox.rscli.upload_with_file (\
... BUCKET_PUBLIC, 'hello.txt', mimetypes.types_map['.txt'], \
... StringIO ( 'hello' ), \
... '', '', token )
>>> simplejson.loads ( upload_response )['hash']
u'Fqr0xh3cxeii2r7eDztILNmuqUNN'
真心建议七牛把`mimeType`改为`mime_type`.
>>> info = qn.Stat ( 'hello.txt' )
>>> info['mimeType']
u'text/plain'
>>> info['hash']
u'Fqr0xh3cxeii2r7eDztILNmuqUNN'
response是一个json,其中包含键url,url为临时的下载地址,有时效为键expires, 这里就不下载文件演示了。
>>> response = qn.Get ( 'hello.txt', 'hello.txt' )
>>> urllib.urlopen ( response['url'] ).read ( )
'hello'
>>> qn.Delete ( "requirements.txt" )
True