python-magic 包可以检查格式.mp4的视频文件的 mime 类型吗?



我正在尝试使用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'
}

如果我在"supported_types"的位置提供图像哑剧类型和音频哑剧类型,则此代码工作正常,但现在对于视频,它不支持可能是什么原因

错误是这样的:"_io。BufferedRandom' 对象没有属性 'getvalue'

我尝试上传的文件是.mp4格式,可以在媒体播放器中完美播放

或者,有没有其他方法可以在上传之前验证python/django中的.mp4(视频(文件格式,哪个比这更好?

我已经用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在 django 中给出 mime 类型。

最新更新