Я делаю некоторую проверку файла и хочу загрузить UploadedFile во внешнюю библиотеку, пока она находится в каталоге '/ tmp', прежде чем я сохраню его где-нибудь, чтобы он мог быть выполнен. Джанго делает следующее:
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.51024:
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 не имеет атрибута «virtual_file_path». Если я вместо этого использую file.teven_file_path (просто бросая дротики в темноте), я получаю IOError:
[Errno 2] Нет такого файла или каталога: 'связанный метод TemporaryUploadedFile.teilitary_file_path из>'
*1024*
Я понимаю, что временное_файл_путь - это решение, которое я ищу, я просто не могу понять, как его использовать, и ни документы, ни Google не кажутся мне особенно полезными в этом конкретном случае.