七牛云覆盖上传?

看了这么长时间《神秘的程序员》,看了这么久七牛的广告,一直没有抽时间实验一下用传说中的对象存储存图片。

今天有机会,花半天试验了一下。

随便注册了个个人的,免费,不用绑定域名,输入ip也可以。按照sdk,上传、下载、引用都没问题,但是在缓存刷新上卡了一下。

主要问题,他的缓存机制,如果同样的key覆盖更新,一天只能更新500次,每次只能更新XX个key

如果是用户头像之类需要经常更新的东西:不应该用同名key覆盖,而是每次对七牛产生唯一的uuid,删除旧uuid文件,上传新uuid文件

就无关缓存问题了。

——主要还是没接触过缓存、cdn这些概念,对键值存储的用法不对。

代码是测试用的分段乱写的 

from qiniu import Auth, put_file,http
import requests
import json
# 下载

access_key = 'aaa'
secret_key = 'bbb'
q = Auth(access_key, secret_key)

print(q)
bucket_domain = 'ccc.bkt.clouddn.com'
key = '2139614121.jpg'
#有两种方式构造base_url的形式
base_url = 'http://%s/%s' % (bucket_domain, key)

#可以设置token过期时间
private_url = q.private_download_url(base_url, expires=3600)
print(private_url)
r = requests.get(private_url)
assert r.status_code == 200

#上传:

#要上传的空间
bucket_name = 'ddd'
#上传到七牛后保存的文件名 用户头像
uid = 1
key = '{0}_head'.format(uid)

#生成上传 Token,可以指定过期时间等
token = q.upload_token(bucket_name, key, 3600)
#要上传文件的本地路径
localfile = './static/img/3.jpg'
ret, info = put_file(token, key, localfile)
print(info)
#assert ret['key'] == key
#assert ret['hash'] == etag(localfile)

#刷新七牛缓存,要对指定web_api发起请求,才会刷新缓存
url = 'http://fusion.qiniuapi.com/v2/tune/refresh'
data = {
   "urls": ['http://oz4pkhxf8.bkt.clouddn.com/1_head'],
    "dirls":[]
}

res = http._post_with_auth(url, data, q)
print(res)

#view中调用
def view():
    #uid = user.id
    uid = 1
    key_image_qiniu = '{0}_head'.format(uid)
    # 有两种方式构造base_url的形式
    base_url = 'http://%s/%s' % (bucket_domain, key)
    private_url = q.private_download_url(base_url, expires=3600)
    print(private_url)
原文地址:https://www.cnblogs.com/xuanmanstein/p/7808799.html