将文件上传限制为仅音频和视频格式
问题描述:
如何在只接受特定文件的Django中添加音频和视频文件字段?将文件上传限制为仅音频和视频格式
请用1个例子来解释我。
models.py:
class Post(models.Model):
audio_file = models.FileField(upload_to = u'mp3/', max_length=200)
video_file = models.FileField(upload_to = u'video/', max_length=200)
forms.py
class PostForm(forms.Form):
audio_file = forms.FileField(label = _(u"Audio File"))
video_file = forms.FileField(label = _(u"Video File"))
答
你可以简单地通过窗体的clean
方法检查
class FileUploadForm(forms.Form):
audio_file = forms.FileField(label = _(u"Audio File"))
...
def clean(self):
cleaned_data = self.cleaned_data
file = cleaned_data.get("audio_file")
file_exts = ('.mp3',)
if file is None:
raise forms.ValidationError('Please select file first ')
if not file.content_type in settings.UPLOAD_AUDIO_TYPE: #UPLOAD_AUDIO_TYPE contains mime types of required file
raise forms.ValidationError('Audio accepted only in: %s' % ' '.join(file_exts))
return cleaned_data