错误将解码图像保存到模型Django

时间:2017-06-19 06:41:37

标签: python django image

我有一个base-64字符串,我发送到路由views.py并使用代码解码它

image_data = request.POST.get('image_data')
pattern = r'^data:(?P<mime_type>[^;]+);base64,(?P<image>.+)$'
result = re.match(pattern, image_data)
if result:
    mime_type = result.group('mime_type')
    image = result.group('image').decode('base64')
    saveImage = uploadImage(image=image, imageMime=mime_type)
    saveImage.save()

解码后,我需要将其保存到项目中的文件夹而不是本地。但是,当我调用.save()时,我收到编码错误:DjangoUnicodeDecodeError: 'utf8' codec can't decode byte 0x89 in position 0: invalid start byte. You passed in '\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x

我是否需要剥离PNG部件才能使其正常工作?

我的模型如下:

class uploadImage(models.Model):
    image = models.ImageField(upload_to='Gallery')
    imageMime = models.CharField(max_length=50)

1 个答案:

答案 0 :(得分:0)

您正在将ImageField设置为bytestring;它期待一个流对象(或文件的路径,IIRC)。尝试换行BytesIO,例如

saveImage = uploadImage(image=BytesIO(image), imageMime=mime_type)

您需要在views.py。

的顶部from io import BytesIO