如何使用带有filefield的django将所有类型的文件上传到cloudinary


大家好,我想把所有类型的文件上传到cloudinary这是我的模型我不想上传特定类型的文件,而是所有类型的平民帮我
class post(models.Model):
titre=models.CharField(unique=True,null=True,max_length=100)
description=models.TextField(null=True,blank=True,max_length=400)
T=models.CharField(default="image",blank=True,max_length=50)
image=models.FileField(null=True)
cat=models.ForeignKey(categorie,on_delete=models.CASCADE,null=True)
datepost=models.DateTimeField(auto_now_add=True,blank=True)
user=models.ForeignKey(myuser,on_delete=models.CASCADE,null=True)
vue=models.IntegerField(default=0,blank=True)
def __str__(self):
return self.titre
def save(self, *args ,**kwargs):
#cette partie permet de generer un identifiant unique
f=self.image.read(1000)
self.image.seek(0)
mime=magic.from_buffer(f,mime=True)
if "video" in mime :
self.T="short"
super(post,self).save(*args,**kwargs)

谢谢你的帮助,对我糟糕的英语感到抱歉

Cloudinary不允许您上传所有类型的文件,因此如果您想上传任何类型的文件都需要使用另一个对象存储或使用本地媒体存储。

将资产上传到Cloudinary Media Library帐户时,支持不同类型的文件,可以使用[parameter resource_type][1]进行识别。还有一个类CloudinaryField,您可以在其中提供参数resource_type="自动自动支持不同的文件类型,例如:

from cloudinary.models import CloudinaryField
from django.contrib import admin
from django.db import models
class Photo(models.Model):
name = models.CharField(max_length=159)
image = CloudinaryField(
"Image",
resource_type="auto",  # <= Options: image, video, raw, auto
)

有一个示例项目是Cloudinary Python SDK的一部分,可以在这里找到[2]。

[1] :https://cloudinary.com/documentation/image_upload_api_reference#:~:text=参数%20to%20attachment(。-,resource_type,-String[2] :https://github.com/cloudinary/cloudinary-django-sample

最新更新