我有一个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)
答案 0 :(得分:0)
您正在将ImageField
设置为bytestring;它期待一个流对象(或文件的路径,IIRC)。尝试换行BytesIO
,例如
saveImage = uploadImage(image=BytesIO(image), imageMime=mime_type)
您需要在views.py。
的顶部from io import BytesIO