【问题标题】:Django admin ImageField: Upload a valid image. The file you uploaded was either not an image or a corrupted imageDjango admin ImageField:上传一个有效的图像。您上传的文件不是图片或损坏的图片
【发布时间】:2018-12-15 01:22:48
【问题描述】:

错误:“上传有效图片。您上传的文件不是图片或损坏的图片。”

我一直在四处寻找,但无法找到解决问题的方法。我在 venv 本地使用相同的图像并且它们可以工作。我在具有相同 Pillow 库和依赖项的 docker 容器中使用相同的图像并且它可以工作。

我有一个 Django ImageField,我有一个简单的管理表单。

我可以将图像上传到 S3 进行存储。我已经拉出了我们在服务器上使用的 docker 容器,并且我已经在本地运行了它,但是无法得到错误。我在上传图片之前没有遇到过这个错误,所以我不确定为什么会这样。

# 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 后面,如果有人自己遇到此问题,我的答案/解决方案如下。

【问题讨论】:

    标签: django amazon-web-services django-admin aws-api-gateway


    【解决方案1】:

    我昨天解决了这个问题!代码本身或包没有任何问题。

    我忘记提及的一件事是它位于 API Gateway 后面,因此我需要对其进行修改以接受“multipart/form-data”。

    【讨论】:

      【解决方案2】:

      有相同/相似的问题,这解决了它:

      1. 在二进制媒体类型下的 API 网关设置中添加 multipart/form-data
      2. 在代理“Method Request”、“HTTP Request Headers”中添加“Accept”和“Content-Type”
      3. 重新部署 API

      【讨论】:

        猜你喜欢
        • 2011-11-28
        • 1970-01-01
        • 1970-01-01
        • 2021-08-10
        • 2019-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多