安装七牛
pip install qiniu
初始化,在使用前需要拿到自己的AccessKey 和 SecretKey 签名授权,查看
from qiniu import Auth
q = Auth(access_key, secret_key)
一:官方上传流程
# -*- 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)
print(info)
assert ret['key'] == key
assert ret['hash'] == etag(localfile)
在django中自实现方法, 此处使用put_data方法,以流的形式进行上传
# -*- coding: utf-8 -*-
from qiniu import Auth, put_data, etag, urlsafe_base64_encode
import qiniu.config
from django.http import JsonResponse
from settings import ACCESS_KEY,SECRET_KEY
# 需要填写你的 Access Key 和 Secret Key
access_key = ACCESS_KEY
secret_key = SECRET_KEY
# 七牛云域名
QINIU_URL_DOMAIN = ""
def storage(file_data):
"""
上传文件到七牛
:param file_data: 要上传的文件数据
:return:
"""
# 构建鉴权对象
q = Auth(access_key, secret_key)
# 要上传的空间
bucket_name = 'images'
# 生成上传 Token,可以指定过期时间等
# 此处也可以添加指定的图片名称 token = q.upload_token(bucket_name, file_name, 3600)
token = q.upload_token(bucket_name, None, 3600)
ret, info = put_data(token, None, file_data)
if info.status_code == 200:
# 表示上传成功, 返回文件名
return ret.get("key")
else:
# 上传失败
raise Exception("上传七牛失败")
def resume_albums(request):
if request.method == "POST":
dict = request.POST
uid = dict.get('uid')
image_file = request.FILES.get('album_url')
albums = Zlh_resume_album.objects.filter(uid=uid)
album = albums.first()
image_data = image_file.read()
file_name = storage(image_data)
album.album_url = file_name # 将图片地址存入数据库
album.save()
img_url = QINIU_URL_DOMAIN + file_name
return JsonResponse(
{
"status": "success",
"code": 200,
"msg": "上传成功",
"img_url": img_url,
}, content_type="application/vnd.zlh+json" # 这种方式更安全 后面写文章 解释下
)