I am writing a sails.js app. I am writing an API to accept a file and encrypt it.
var file = req.body('myFile');
var fileBuffer = convertToBuffer(file);
How do I convert a file to buffer?
That looks like you've got a string which represents the body of your file.
You just have to make a new buffer with it.
var fileBuffer = Buffer.from(file)
If your encoding is NOT utf8 you can specify an alternate encoding as a second optional argument.
var fileBuffer = Buffer.from(file, 'base64')
If the file is actually on disk, this is even easier, since, by default, the fs.readFile operation returns a buffer.
fs.readFile(file, function(err, buffer){})
If you're in a real old version of node Buffer.from doesn't exist and you have to use a very memory-unsafe new constructor. Please consider upgrading your node instance to support Buffer.from
new Buffer has been deprecated in replace of Buffer.from(...). You can read more about this here: nodejs.org/api/…Argument of type File is not assignable to parameter of type WithImplicitCoercion<string> | { [Symbol.toPrimitive](hint: 'string'): string; }In 2024 this is what I'm doing – which makes typescript happy.
First create an ArrayBuffer from the file, then pass the ArrayBuffer to Buffer.from like so
const arrayBuffer = await file.arrayBuffer()
const buffer = Buffer.from(arrayBuffer)