返回总目录页

七牛云存储

 

七牛云基本使用

注册登录

注册登录后先买了个新人优惠

 

 对象存储

 

 创建一个标准存储

 

 新建空间

 

 填写信息

 

 

 

 文件上传

 

 

 

 可以批量上传

 

 

 

 

 

 可以选择多个文件上传

 

 

 

 

 

 刷新页面,可以看到了

 

 访问文件

点击文件详情

 

 复制访问地址

 

 访问链接,正常访问到

 

创建目录

 

 

 

 还可以提供点击下载

 

 虽然空间是私有,但是下面的图片之类的是可以访问的

 

 python使用七牛云存储

https://developer.qiniu.com/kodo/1242/python

 

普通上传文件 

我们复制一份官网示例上传代码

# -*- coding: utf-8 -*-
# flake8: noqa

from qiniu import Auth, put_file, etag
import qiniu.config

#需要填写你的 Access Key 和 Secret Key
access_key = 'Access_Key'
secret_key = 'Secret_Key'

#构建鉴权对象
q = Auth(access_key, secret_key)

#要上传的空间
bucket_name = 'Bucket_Name'

#上传后保存的文件名
key = 'my-python-logo.png'

#生成上传 Token,可以指定过期时间等
token = q.upload_token(bucket_name, key, 3600)

#要上传文件的本地路径
localfile = './sync/bbb.jpg'

ret, info = put_file(token, key, localfile, version='v2') 
print(info)
assert ret['key'] == key
assert ret['hash'] == etag(localfile)
官网示例

找到ak sk

 

 

 

 将官网示例修改一下,ak sk 空间名  ,要上传的文件在那里,保存为什么名字,程序运行成功

 

 去页面可以看到保存的图片

 

 我想上传到mcwdir目录中呢,给要保存的文件名,添加上相对目录就行,

 

 再次去页面查看,上传了的

 

 前面加上从根开始的路径也是可以的

上传文件函数,返回结果我们用两个参数接收,里面都又key,也就是文件名名字

 

 

上传文件加回调

上传文件到七牛云,我们需要上传文件的大小,地址等等一些信息

# -*- coding: utf-8 -*-
# flake8: noqa

from qiniu import Auth, put_file, etag
import qiniu.config

access_key = 'Access_Key'
secret_key = 'Secret_Key'

q = Auth(access_key, secret_key)

bucket_name = 'Bucket_Name'

key = 'my-python-logo.png'

#上传文件到存储后, 存储服务将文件名和文件大小回调给业务服务器。
policy={
 'callbackUrl':'http://your.domain.com/callback.php',
 'callbackBody':'filename=$(fname)&filesize=$(fsize)'
 }

token = q.upload_token(bucket_name, key, 3600, policy)

localfile = './sync/bbb.jpg'

ret, info = put_file(token, key, localfile, version='v2') 
print(info)
assert ret['key'] == key
assert ret['hash'] == etag(localfile)
官网示例

修改ak sk,修改空间名,key 和需要上传的文件,执行。报错了

 

 生成了这样一个文件夹

 

 我们上传的不是从根目录开始已有的文件夹,而是新生成一个文件夹,将我那个带有目录的文件都放到这个文件夹

 

 这显然不是我们想要的

 

 即使将key前面根去掉,还是报错了,但是文件上传成功的,是上传到想要的目录。

 

 

 

 我们看一下info信息,

info:  _ResponseInfo__response:<Response [579]>, exception:None, status_code:579, 
text_body:{
    "error":"{\"callback_url\":\"http://your.domain.com/callback.php\",\"callback_bodyType\":\"application/x-www-form-urlencoded\","
            "\"callback_body\":\"filename=touxiang2.jpg\\u0026filesize=18378\",\"token\":\"\",\"err_code\":502,"
            "\"error\":\"Post \\\"http://your.domain.com/callback.php\\\": dial tcp: lookup your.domain.com on 10.22.12.241:53: no such host\","
            "\"hash\":\"FhY_XyKuELdPD_YdvURKjSylqGhW\",\"key\":\"mcwdir/my-touxing5.png\"}"}, 
req_id:7s0AAABHK4pJ6S0X, x_log:X-Log, error:{"error":"{\"callback_url\":\"http://your.domain.com/callback.php\","
                                                     "\"callback_bodyType\":\"application/x-www-form-urlencoded\",\"callback_body\":"
                                                     "\"filename=touxiang2.jpg\\u0026filesize=18378\",\"token\":\"\",\"err_code\":502,\"error\":\"
                                                     ""Post \\\"http://your.domain.com/callback.php\\\": dial tcp: lookup your.domain.com on 10.22.12.241:53: no such host\"," \
                                                               "\"hash\":\"FhY_XyKuELdPD_YdvURKjSylqGhW\",\"key\":\"mcwdir/my-touxing5.png\"}"}

我们这里回调地址没有写成自己的,显然报错很正常,这是回调失败

 

 我们用这个域名替换下

 删除图片

删除方法如下:

 

官网源码,删除单个文件

# -*- coding: utf-8 -*-
# flake8: noqa
from qiniu import Auth
from qiniu import BucketManager
access_key = 'Access_Key'
secret_key = 'Secret_Key'
#初始化Auth状态
q = Auth(access_key, secret_key)
#初始化BucketManager
bucket = BucketManager(q)
#你要测试的空间, 并且这个key在你空间中存在
bucket_name = 'Bucket_Name'
key = 'python-logo.png'
#删除bucket_name 中的文件 key
ret, info = bucket.delete(bucket_name, key)
print(info)
assert ret == {}
删除单个文件

我们将删除文件封装为函数,需要传要删除的文件名,要将ak sk ,空间名改成自己要删除的对应的,这里我们打印一下看返回信息

 

 我们想要将下面文件删除掉

 

 将文件名字传入

 

 执行程序,运行正常,也就i是正常删除,因为ret返回为空,所以删除的函数没有将ret作为返回值。

 

 在七牛云上也无法看到这个图片了,已经成功将文件删除。这里只需要调用函数,传文件名字就可以删除这个文件了

 

posted @ 2022-12-05 20:29  马昌伟  阅读(163)  评论(0编辑  收藏  举报
博主链接地址:https://www.cnblogs.com/machangwei-8/