2014-01-28 3 views
3

У меня есть сайт, который позволяет пользователям загружать изображения. Для того, чтобы проверить тип MIME файла пользователь загрузил я использую следующий скрипт, который использует python-magicПроверить тип загруженного файла в Django

import magic 
mime = magic.Magic(mime=True) 
if mime.from_file(request.FILES['media-pic']) not in ['image/jpeg', 'image/pjpeg', 'image/png', 'image/gif']: 
    # don't allow the file to be uploaded 

Однако, когда я пытаюсь загрузить файл, я получаю ошибку coercing to Unicode: need string or buffer, TemporaryUploadedFile found. Я не думал, что это сработает, но я пробовал request.FILES['media-pic'].name и получил ошибку File does not exist.

Как проверить тип файла MIME перед его сохранением на сервере?

ответ

2

mime.from_file ожидает имя файла и в зависимости от размера файла загруженный файл может существовать только в памяти. Вместо этого вы можете использовать метод mime.from_buffer, используя примерно следующее:

f = request.FILES['media-pic'] 
# maybe even only read the first X bytes, might be enough for mimetype detection 
mimetype = mime.from_buffer(f.read()) 
Смежные вопросы