我想通过在pre_save信号上保存它来保存文件mime类型。
from django.db.models.signals import pre_save
from django.db import models
import magic
class Media (models.Media):
file = models.FileField()
content_type = models.CharField(max_length=128, editable=False)
def media_pre_save(sender, instance, *args, **kwargs):
if not instance.content_type:
mime = magic.Magic(mime=True)
instance.content_type = mime.from_buffer(instance.file.read())
pre_save.connect(media_pre_save, sender=Media)
但是当我在数据库中查看它时,我得到了application/x-empty
。我在做什么错?
我终于想出了如何获取上载文件的绝对路径,并使用from_file
的magic
方法,如下所示:
instance.content_type = magic.from_file(instance.file.path, mime=True)
我欠以下链接的答案:https://docs.djangoproject.com/en/2.2/_modules/django/db/models/fields/files/和https://github.com/ahupp/python-magic