Работает ли пакет python-magic для проверки mime-типа видеофайлов формата .mp4? - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь использовать пакет python-magic для определения типа загруженного файла (используя mime-тип), я использовал его для идентификации изображения и аудиофайла, он отлично работает, но для видеофайла, выдает ошибку.

Для видео файла у меня есть

class VideoFileUploadForm(forms.ModelForm):
    def clean(self):
        cleaned_data = super(VideoFileUploadForm, self).clean()

        upload_file = cleaned_data['upload']

        try:

            if upload_file:

                supported_types = ['video/mp4', 'video/x-matroska',
                                   'video/ogg','video/quicktime', 'video/x-ms-wmv',
                                   'video/webm']

                mimetype_of_file_uploaded = magic.from_buffer(upload_file.file.getvalue(), mime=True)

                val = 0

                for item1 in supported_types:

                    if item1 == mimetype_of_file_uploaded:
                        val = 1
                        break

                if val == 0:
                    raise ValidationError(u'Error! File can only be .mp4, .mkv,.ogg,.mov ,.wmv and .webm(video)  format')
        except (RuntimeError, TypeError, NameError,AttributeError) as e:
            print(e)
            raise ValidationError("Error! Something is wrong.File should be .mp4,"
                                  " .mkv,.ogg,.mov ,.wmv and .webm(video) format!")

    class Meta:
        model = VideoFileUpload
        fields = (
            'file_name',
            'upload',
        )

    def __init__(self, *args, **kwargs):
        super(VideoFileUploadForm, self).__init__(*args, **kwargs)

        self.fields['upload'].widget.attrs = {
            'class': 'btn  btn-block',
            'name': 'myCustomName',
            'placeholder': 'Upload file',
            'required': 'true'
        }

Этот код работает нормально, если я предоставляю типы mime-изображений и типы mime-аудио вместо «support_types», но теперь для видео он не поддерживает причину

Ошибка выглядит следующим образом: объект '_io.BufferedRandom' не имеет атрибута 'getvalue'

Файл, который я пытался загрузить, имеет формат .mp4, который отлично воспроизводится в медиаплеере

Или, есть ли другой способ проверить формат файла .mp4 (видео) в python / django перед загрузкой, который лучше этого?

1 Ответ

0 голосов
/ 11 июля 2018

Я решил это с помощью django, вместо использования python-magic, я использовал django, встроенный в средство проверки типов mime. Django предоставляет mime в виде типов содержимого Чтобы найти тип контента, я сделал

 if upload_file:

            # supported format pdf, msword,mobi,txt ,ott,epub
            # mp4, mkv(x-maroska),ogg,.mov(quicktime),.wmv,webm
            supported_types = ['video/mp4', 'video/x-matroska',
                               'video/ogg','video/quicktime', 'video/x-ms-wmv',
                               'video/webm']



            mimetype_of_file_uploaded = upload_file.content_type

content_type указывает тип mime в django.

...