python-七牛对象存储

安装七牛

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"  # 这种方式更安全  后面写文章 解释下
        )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值