我正在进行一些文件验证,并且想要将一个UploadedFile加载到外部库中,而它位于'/ tmp'目录中,然后将它保存到可以执行的地方。 Django做了以下事情:
Django会将上传的文件写入存储在系统临时目录中的临时文件中。在类似Unix的平台上,这意味着你可以期待Django生成一个名为/tmp/tmpzfp6I6.upload的文件。
我想要“tmpzfp616.upload”,我希望能够得到我的帮助.UploadedFile.name给了我“”而file.name给了我正确的名称“example.mp3”。
使用我正在使用的库,我需要将临时文件的文件路径传递给库,而不是文件本身,因此需要字符串。
有什么想法吗?
提前致谢。
编辑:这是我的代码:
from django.core.files.uploadedfile import UploadedFile
class SongForm(forms.ModelForm):
def clean_audio_file(self):
file = self.cleaned_data.get('audio_file',False)
if file:
[...]
if file._size > 2.5*1024*1024:
try:
#The following two lines are where I'm having trouble, MP3 takes the path to file as input.
path = UploadedFile.temporary_file_path
audio = MP3('%s' %path)
except HeaderNotFoundError:
raise forms.ValidationError("Cannot read file")
else:
raise forms.ValidationError("Couldn't read uploaded file")
return file
使用“UploadedFile”我得到一个AttributeError“类型对象''UploadedFile'没有属性'temporary_file_path'”。如果我改为使用file.temporary_file_path(这里只是在黑暗中投掷飞镖)我得到一个IOError:
[Errno 2]没有这样的文件或目录:'bound method TemporaryUploadedFile.temporary_file_path of gt;'
我意识到temporary_file_path是我正在寻找的解决方案,我只是无法弄清楚如何使用它,在这个特定的实例中,docs和google似乎都没什么帮助。