我在http://nodejs.org/api/buffer.html#buffer_buffer的Buffer文档中没有看到回调。我可以安全地认为Buffer是同步的吗?我正在尝试将二进制文件转换为base64编码的字符串。
我最终想要做的是获取一个PNG文件,并将其base64编码的字符串存储在MongoDB中。我读过某个地方,我应该获取PNG文件,使用Buffer转换为base64,然后将此base64输出传递给Mongo。
我的代码如下所示:
fs.readFile(filepath, function(err, data) {
var fileBuffer = new Buffer(data).toString('base64');
// do Mongo save here with the fileBuffer ...
});
我有点担心Buffer是同步的,因此在进行base64编码时会阻塞其他请求。如果是这样,是否有更好的方法将二进制文件转换为以base64编码的二进制文件以存储在Mongo中?
它是同步的。您可以通过切片Buffer并一次转换少量并在其间调用process.nextTick()或在子进程中运行它来使其异步-但我不建议使用这两种方法。
相反,我建议不要将图像存储在数据库中,而是将它们存储在磁盘上,或者存储在诸如Amazon S3之类的文件存储服务中,然后仅将文件路径或URL存储在数据库中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句