Django项目,上传图片到七牛云

简略步骤为:

1.注册登陆七牛云,

上传项目到阿里云OSS:链接

或者到我的主页查看

2.创建存储空间,https://portal.qiniu.com/home

创建空间之后会自动生成一个测试域名,官方域名有效时间是一个月,如果自己有域名的话可以自定义域名,域名过期就不能通过连接访问了

在这里插入图片描述
3.修改python代码


修改python代码

1. 指定存储类

在Django项目的settings文件中,指定存储类,字符串中代表自定义的路径,我的放在项目目录下的utils/storage文件中

# 指定存储类
# 指定自定义的Django文件存储类,
DEFAULT_FILE_STORAGE = 'utils.storage.MyStorage'
#七牛云空间CDN 测试域名
QN_BASE_URL ='http://qv58500gn.hb-bkt.clouddn.com/'

在这里插入图片描述

查看测试域名

在这里插入图片描述

2. 存储类代码

前端获取图片可以通过,字段名.url的形式获取图片地址,eg:user.avatar.url

#/utils.storage文件中

from django.core.files.storage import Storage
from django.conf import settings

class MyStorage(Storage):
    """自定义文件存储类"""
    def _open(self, name, mode='rb'):
        pass

    def _save(self, name, content, max_length=None):
        pass

    def url(self, name):
        # name 就是图片的名字,
        return settings.QN_BASE_URL + name
        

3. 图片上传七牛云代码

import logging

from qiniu import Auth, put_data

# 需要填写你的 Access Key 和 Secret Key
access_key = 'BGhjPDNlnsGVF_VYhhTqL3epr3VNRnqlwxxxxxx'
secret_key = 'Z2tfw_Xey8N9GTHfSp7TE8GaNckxyQ0Qxxxxxxx'

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

# data 接收的是图片二进制
def storage(data):
    """七牛云存储上传文件接口"""
    if not data:
        return None
    try:
        # 构建鉴权对象
        q = Auth(access_key, secret_key)

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

        # 上传文件
        ret, info = put_data(token, None, data)

    except Exception as e:
        logging.error(e)
        raise e

    if info and info.status_code != 200:
        raise Exception("上传文件到七牛云失败")

    # 返回七牛中保存的图片名,这个图片名也是访问七牛获取图片的路径
    return ret["key"]


if __name__ == '__main__':
    file_name = input("输入上传的文件")
    with open(file_name, "rb") as f:
        storage(f.read())

恭喜你配置完成!!!

欢迎关注wx公众hao:软件集合

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐