错误信息:"上传有效的图像。您上传的文件不是图像或已损坏的图像。"
我一直在寻找解决问题的方法。我将同样的图像文件用于本地环境和具有相同 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
Pillow==5.3.0
编辑:
这个在AWS API Gateway后面,如果有人遇到这个问题,我的答案/解决方案如下。