python判断音频是问句_Django / Python:如何读取文件并验证它是否是音频文件?

Possible Duplicate:

07000

我正在构建一个Web应用程序,用户可以上传媒体内容,包括音频文件.

我的AudioFileUploadForm中有一个干净的方法验证以下内容:

>音频文件不是太大.

>音频文件具有有效的content_type(MIME类型).

>音频文件具有有效的扩展名.

但是,我担心安全问题.用户可以上传带有恶意代码的文件,并轻松传递上述验证.我接下来要做的是验证音频文件确实是一个音频文件(在写入磁盘之前).

我该怎么做?

class UploadAudioForm(forms.ModelForm):

audio_file = forms.FileField()

def clean_audio_file(self):

file = self.cleaned_data.get('audio_file',False):

if file:

if file._size > 12*1024*1024:

raise ValidationError("Audio file too large ( > 12mb )")

if not file.content_type in ['audio/mpeg','audio/mp4', 'audio/basic', 'audio/x-midi', 'audio/vorbis', 'audio/x-pn-realaudio', 'audio/vnd.rn-realaudio', 'audio/x-pn-realaudio', 'audio/vnd.rn-realaudio', 'audio/wav', 'audio/x-wav']:

raise ValidationError("Sorry, we do not support that audio MIME type. Please try uploading an mp3 file, or other common audio type.")

if not os.path.splitext(file.name)[1] in ['.mp3', '.au', '.midi', '.ogg', '.ra', '.ram', '.wav']:

raise ValidationError("Sorry, your audio file doesn't have a proper extension.")

# Next, I want to read the file and make sure it is

# a valid audio file. How should I do this? Use a library?

# Read a portion of the file? ...?

if not ???.is_audio(file.content):

raise ValidationError("Not a valid audio file.")

return file

else:

raise ValidationError("Couldn't read uploaded file")

编辑:通过“验证音频文件确实是一个音频文件”,我的意思是:

包含音频文件典型数据的文件.我担心用户可以上传带有适当标题的文件,并使用恶意脚本代替音频数据.例如…… mp3文件是mp3文件吗?或者它包含一些mp3文件的特征?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值