如何在Node.js中将文件转换为缓冲区?

20

我正在编写一个 sails.js 应用程序。我正在编写一个 API 来接受文件并对其进行加密。

var file = req.body('myFile');
var fileBuffer = convertToBuffer(file);

我该如何将文件转换为缓冲区?

1个回答

41

看起来你有一个表示文件主体的字符串。

你只需用它创建一个新的缓冲区

var fileBuffer = Buffer.from(file)

如果您的编码不是utf8,您可以指定第二个可选参数作为替代编码。

var fileBuffer = Buffer.from(file, 'base64')

如果文件实际上在磁盘上,那么这将更容易,因为默认情况下,fs.readFile 操作会返回一个缓冲区。

fs.readFile(file, function(err, buffer){})

如果你使用的是一个真正老版本的Node,Buffer.from 方法不存在,你必须使用非常不安全的 new 构造函数。请考虑升级你的Node实例以支持 Buffer.from


2
如果您现在才看到这个评论,请注意new Buffer已被弃用,取而代之的是Buffer.from(...)。您可以在此处阅读更多信息:https://nodejs.org/api/buffer.html#buffer_class_method_buffer_from_object_offsetorencoding_length - Chasen Bettinger
3
@ChasenBettinger 谢谢你提醒我,已经更新并展示了 Buffer 的正确使用方法。 - tkone
1
很难找到关于文件对象的答案,唉。 - Forbidden
如果这里有任何前端开发者,对后端操作感到困惑,并且在服务器上上传图像文件时正在寻找文件对象 -> 缓冲区,那么请注意,在服务器上文件应该使用像Busboy这样的库进行处理,它们将变成文件流,而不是文件对象。所以你需要将文件流转换为缓冲区 - 这可能是你正在寻找的东西。我在这个话题上回答过:https://stackoverflow.com/a/77429654/10489004 - undefined

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