Django的models.FileField文件存储到阿里云对象存储中

1,阿里云对象存储设置

1.1,开通对象存储

1.2,下载SDK

pip install oss2

1.3,创建key

2,Django配置

2.1,models创建模型

class Chapter(models.Model):
     id = models.IntegerField(primary_key=True, verbose_name="序号")
     text = models.FileField(verbose_name="地址", upload_to=r'files/article/books/')

2.2,setting设置

pip install django_oss_storage
# 在阿里云控制台找
OSS_ACCESS_KEY_ID = "LTHKTAfrguetyIKUGTDDFRGTHFDFGHJGFGHoLQffM"
OSS_ACCESS_KEY_SECRET = "HIUyuzOCozZggffdbnnIUYHGFDRFTHfvJH6KQp"
OSS_ENDPOINT = "https://oss-cn-hangzhou.aliyuncs.com/"
OSS_BUCKET_NAME = "wutuFFGHboJHGFokGGs"  # 桶名称
PREFIX_URL = 'https://'
BUCKET_NAME = "wutuFFGHboJHGFokGGs"
END_POINT = "oss-cn-hangzhou.aliyuncs.com"

MEDIA_URL = '/media/'

DEFAULT_FILE_STORAGE = 'django_oss_storage.backends.OssMediaStorage'

3,上传文件

3.1,ajax上传

3.2,form表单上传

3.3,本地文件上传

from django.core.files.base import ContentFile
from django.core.files import File

with open("./001.text", mode="rb") as fp:
     file_content = File(fp)
     Chapter.objects.create(id=id, text=file_content
     # 自定义上传路径,文件名称
     # file_content = File(fp, name=f"{book}/{id}.text")
     

3.4,一串字符串,或者一条json数据

方式一:先将json写入硬盘再读取,比较慢
方式二:

from django.core.files.base import ContentFile

file_content = ContentFile(jsontext.encode("utf8"), name=f"{book_id}/{id}.json")
Chapter.objects.create(id=id, text=file_content
posted @ 2022-07-15 16:22  下个ID见  阅读(352)  评论(0)    收藏  举报