使用base64编码上传图片是一个不好的做法吗?

13

在仅上传图片到服务器时,使用base64编码是否有问题?考虑到常见的图像大小约为1-2 MB,而不是图标大小的图像。这是一个不好的实践吗?在上传图片时,是否应始终使用表单数据?

图片将与其他数据一起在POST正文(JSON内容类型)中发送,例如:

// POST /signup
{
  email: 'example@email.com',
  password: '12345678',
  name: 'Example Name',
  picture: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAA...',
}

一旦在服务器中,它将被发送到 AWS 存储桶并作为二进制文件提供,而不是作为 base64 编码的字符串。


2
请添加更多有关您想要的实现细节,以便我们更好地了解使用base64的适用性:它是大图还是小图?您将如何执行上传?(ajax、表单数据等) - Marc Sances
@MarcSances 你是对的。已修复。 - Mateus Pires
2个回答

10

对于二进制图像进行Base64编码的 普遍接受的结果 大约比原始大小增加了30%。如果服务器限制为2MB,则由于编码而增加了大小,您实际上只能使用1.4MB的图像。 Base64不是一种压缩方法,它只是一种在HTTP上将二进制数据发送到服务器的方法。

如果您控制服务器,请使其接受gzip压缩的二进制数据,或者如果您可以将图像放在某个地方,请发送请求中其URL地址,然后服务器可以下载它。


4

Base64编码的图片适用于小尺寸(KB)的图片,但对于更大尺寸的图片,可能会出现大小错误。

但是如果您要使用(MB)大小的图片,我建议将它们传递为缩略图。

缩略图是图片或视频的缩小版本,用于帮助识别和组织它们,在图像中起到与正常文本索引对单词的作用相同的作用。

https://www.npmjs.com/package/image-thumbnail


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接