2016-05-14 16 views
3

Я хочу проверить мои mp3, прежде чем сохранять их на диск, используя Mutagen. Однако с помощью mutagen я могу открыть файл, только если он находится на диске. Есть ли способ обойти это? Я хотел бы быть в состоянии сделать это:мутаген читать TemporaryUploadedFile в django

files = request.FILES 
mp3 = files.get('mp3') 
mp3_audio = MP3(mp3) 

дает мне ошибку:

TypeError: invalid file: <TemporaryUploadedFile: test.mp3 (audio/mpeg)> 

ответ

2

TemporaryUploadedFile объектный файл уже находится на диске, в директории, предназначенной для временных файлов. Для того, чтобы проанализировать его действия, вызовите метод, чтобы получить полный путь:

files = request.FILES 
mp3_temp = files.get('mp3') 
mp3_audio = MP3(mp3_temp.temporary_file_path()) 

см TemporaryUploadedFile.temporary_file_path()

+0

Эй, если бы я знал об этой особенности я бы спасся так много разочарований моментов. –

+0

Эй снова, по какой-то причине django теперь больше не возвращает TemporaryUploadedFile, а вместо этого InMemoryFile. Есть идеи? Он только начинал происходить случайным образом и на определенных файлах. –

+0

nvm, пришлось удалить обработчик файла памяти в настройках –