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
浙公网安备 33010602011771号