Получение MIME-типа файла, находящегося в памяти - Python Django

У меня есть форма, в которой пользователи могут загружать файлы. Я хочу, чтобы они могли загружать только изображения. Я добавил это в HTML-форму, но мне нужно сделать проверку на стороне сервера. Я хотел бы выполнить эту проверку до сохранения файла в AWS S3.

В настоящее время я имею следующее:

from .models import cropSession, cropSessionPhoto

import magic

def crop(request):
    if request.method == 'POST':
        data = request.POST
        images = request.FILES.getlist('photos')
        crop_style = data['style']

        if len(images) <= 0:
            messages.error(request, "At least one photo must be uploaded.")
            return redirect(reverse('crop-form'))

        crop_session = cropSession(crop_style=crop_style)
        crop_session.save()
        for image in images:
            mime = magic.Magic(mime=True)
            mime.from_file(image.file)
            upload = cropSessionPhoto(crop_session=crop_session, photo_file_name=image, photo_file_location=image)
            upload.save()

    else:
        messages.error(request, "An error has occured.")
        return redirect(reverse('crop-form'))

    return render(request, 'crop/crop.html')

Однако я получаю эту ошибку: TypeError: expected str, bytes or os.PathLike object, not BytesIO

Как правильно передать изображение в magic?

Спасибо

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

mime = magic.Magic(mime=True)
mime.from_buffer(f.read(2048))
Вернуться на верх