文章目录
- 实现图片上传到阿里云OSS对象存储
- 1. 创建阿里云OSS对象存储
- 2. 查询获取接口访问key和秘钥
- 3. 安装阿里云的SDK集成到项目中使用
- 3.1 python直接操作oss2
- 3.2 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一起进步吧!!