自学内容网 自学内容网

django项目——图片上传到阿里云OSS对象存储

实现图片上传到阿里云OSS对象存储

1. 创建阿里云OSS对象存储

开发文档:https://promotion.aliyun.com/ntms/act/ossdoclist.html?spm=5176.8465980.entries.1.4e701450wyVJSM

Bucket存储库:https://oss.console.aliyun.com/bucket

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

创建oss对象后,要记录两个信息:bucket名称,endpoint

bucket     luffycity-recourse
endpoint   oss-cn-beijing.aliyuncs.com

在使用oss时需要,配置key和密钥

2. 查询获取接口访问key和秘钥

地址:https://ram.console.aliyun.com/manage/ak

在这里插入图片描述

在这里插入图片描述

3. 安装阿里云的SDK集成到项目中使用

终端下安装:

pip install oss2
3.1 python直接操作oss2

适用于一些没有oss集成模块的web框架中,ossdemo.py,代码:

import oss2,uuid
if __name__ == '__main__':
    OSS_ACCESS_KEY_ID = "LTAI5t991uBJjk8TunKooM7M"
    OSS_ACCESS_KEY_SECRET = "oEDvV9RaoCf6rHIZXlJCJAmk0phub2"
    OSS_ENDPOINT = "oss-cn-beijing.aliyuncs.com"  # 访问域名, 根据服务器上的实际配置修改
    OSS_BUCKET_NAME = "luffycityoline"  # oss 创建的 BUCKET 名称

    OSS_SERVER_URL = f"https://{OSS_BUCKET_NAME}.{OSS_ENDPOINT}"

    # 创建命名空间操作实例对象
    auth = oss2.Auth(OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET)
    bucket = oss2.Bucket(auth, OSS_ENDPOINT, OSS_BUCKET_NAME)

    # 上传文件
    image = f"demo/{str(uuid.uuid4())}.jpg"
    with open('/home/moluo/Desktop/luffycity/luffycityapi/luffycityapi/uploads/avatar/2021/avatar.jpg', "rb") as f:
        result = bucket.put_object(image, f.read() )
        print(result)
        print(result.status)
        print(f"{OSS_SERVER_URL}/{image}")

成功上传图片到阿里云oss
在这里插入图片描述

3.2 django配置自定义文件存储上传文件到oss
pip install django-oss-storage

settings.dev,代码:

# 阿里云OSS云存储
OSS_ACCESS_KEY_ID = "LTAI5t991uBJjk8TunKooM7M"
OSS_ACCESS_KEY_SECRET = "oEDvV9RaoCf6rHIZXlJCJAmk0phub2"
OSS_ENDPOINT = "oss-cn-beijing.aliyuncs.com"    # 访问域名, 根据服务器上的实际配置修改
OSS_BUCKET_NAME = "luffycityoline"    # oss 创建的 BUCKET 名称

# 添加下面配置后 Django admin 后台上传的 ImageField, FileField 类型的字段都会被自动上传到 oss 的服务器中, 访问路径也会自动替换
# 如果注释掉的话 oss 的配置会失效, 上传文件会存储到本地, 且访问路径也会变成本地
DEFAULT_FILE_STORAGE = 'django_oss_storage.backends.OssMediaStorage'

注意:上面的配置完成以后,将来django中所有上传下载的文件都会默认从OSS对象存储中操作。所以本地原来保存的图片等静态资源再访问就无效了。所以我们需要把uploads这个目录下的所有文件信息,手动上传到当前项目配置的OSS Bucket存储库中。

若有错误与不足请指出,关注DPT一起进步吧!!


原文地址:https://blog.csdn.net/m0_66925868/article/details/142442689

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!