Администратор Django ImageField: загрузите действительное изображение.Загруженный вами файл не был изображением или поврежденным изображением - PullRequest
0 голосов
/ 15 декабря 2018

ОШИБКА: «Загрузите действительное изображение. Файл, который вы загрузили, не был изображением или поврежденным изображением.»

Я искал вокруг и не смог найти решение для своегопроблема.Я использую одни и те же изображения локально в venv, и они работают.Я использую те же изображения в док-контейнере, который имеет ту же библиотеку Pillow и зависимости, и это работает.

У меня есть Django ImageField, у меня есть простая форма администратора.

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

# models.py
@deconstructible
class RandomFileName(object):

    def __init__(self, path):
        self.path = path

    def __call__(self, instance, filename):
        ext = filename.split('.')[-1]
        filename = '{}.{}'.format(uuid.uuid4().hex, ext)

        return os.path.join(self.path, filename)

class MyModel(models.Model):
    name = models.CharField(max_length=50)
    avatar = models.ImageField(
        upload_to=RandomFileName('avatars')
    )
    ...


# admin.py
@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    list_display = (
        'name',
        ...
    )
    fieldsets = (
        (None, {'fields': (
            'name',
            'avatar',
        )}),
    )
    ...

Зависимости:

Django == 2.0.3

Подушка == 5.3.0

Изменить:

Это позади AWS API Gateway, и мой ответ / решение ниже, если кто-то должен столкнуться с этимвыдайте себя.

1 Ответ

0 голосов
/ 18 декабря 2018

Я решил это вчера!Нет ничего плохого в самом коде или пакетах.

Одна вещь, которую я забыл упомянуть, это то, что это за API-шлюзом, поэтому мне нужно было изменить это, чтобы принимать «multipart / form-data».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...