在django admin中的pre_save上获取文件mime类型

问题描述 投票:0回答:1

我想通过在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。我在做什么错?

python django django-admin mime-types
1个回答
0
投票

我终于想出了如何获取上载文件的绝对路径,并使用from_filemagic方法,如下所示:

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

© www.soinside.com 2019 - 2024. All rights reserved.