我有一个从 KineticJS toDataURL() 获得的 base64 字符串。这是一个有效的 base64 字符串。这个小提琴表明它是:http: //jsfiddle.net/FakRe/
我的问题:我将这个 dataURI 发送到我的服务器,使用 python 解码,并保存在服务器上。但是,我收到填充错误。这是我的代码:
def base64_to_file(self, image_data, image_name):
extension = re.search('data\:image\/(\w+)\;', image_data)
if extension:
ext = extension.group(1)
image_name = '{0}.{1}'.format(image_name, ext)
else:
# it's not in a format we understand
return None
image_data = image_data + '=' #fix incorrect padding
image_path = os.path.join('/my/image/path/', image_name)
image_file = open(image_path, 'w+')
image_file.write(image_data.decode('base64'))
image_file.close()
return image_file
我可以通过在我的函数顶部执行此操作来解决此填充错误:
image_data = image_data + '=' #fixes incorrect padding
添加任意填充后,它会成功解码并写入文件系统。但是,每当我尝试查看图像时,它都不会渲染,并给我一个“损坏的图像”图标。没有 404,只是一个损坏的图像。是什么赋予了?任何帮助将不胜感激。我已经在这方面花费了太多时间。
重新创建的步骤(可能很迂腐,但我会尽力提供帮助)
- 从 JSFiddle 中获取 base64 字符串
- 将其保存到文本文件
- 在python中打开文件,读入数据,保存到变量
- 将函数中的“/path/to/my/image”更改为您机器上的任何位置
- 将您的编码文本变量传递到具有名称的函数中
- 查看输出
同样,任何帮助都会很棒。谢谢。