我的Express应用程序正在从浏览器(使用toDataURL()从canvas生成)中接收base64编码的PNG,并将其写入文件。但是该文件不是有效的图像文件,因此“文件”实用程序只是将其标识为“数据”。
var body = req.rawBody,
base64Data = body.replace(/^data:image\/png;base64,/,""),
binaryData = new Buffer(base64Data, 'base64').toString('binary');
require("fs").writeFile("out.png", binaryData, "binary", function(err) {
console.log(err); // writes out file without error, but it's not a valid image
});
我还必须保存作为数据URL一部分的Base64编码的图像,因此我最终制作了一个小的npm模块来执行此操作,以防万一我(或其他人)将来需要再次执行此操作。叫做ba64。
简而言之,它使用带有Base64编码图像的数据URL,并将图像保存到文件系统中。它可以同步或异步保存。它还具有两个帮助器功能,一个用于获取图像的文件扩展名,另一个用于将Base64编码与
data:
方案前缀分开。这是一个例子:
安装它:
npm i ba64 -S
。回购在GitHub上:https : //github.com/HarryStevens/ba64。PS后来我想到ba64可能是模块的坏名字,因为人们可能会认为ba64可以进行Base64编码和解码,而实际上并没有(很多模块已经这样做了)。那好吧。