如何使用 multer 从 memoryStorage 创建一个 ReadStream

How to create a ReadStream from memoryStorage with multer

我使用 multer 将文件上传到我的 API:

const multer = Multer({
    storage: Multer.memoryStorage(),
    limits: {
      fileSize: 5 * 1024 * 1024 // no larger than 5mb, you can change as needed.
    }
})

文件出现在const file = req.files["my_file_name"][0]

现在我想为此创建一个 readStream:

fs.createReadStream(file.path).pipe(stream);

问题是,当我将 memoryStorage()multer 一起使用时,file.path 未定义。如何使用 memoryStorage 进行这项工作?

当使用 memoryStorage 时,您不会得到 file.path,您的文件将根据您的请求在缓冲区中。

req.file会有信息{ fieldname, originalname, encoding, mimetype, buffer }

控制台输出流

const streamifier = require('streamifier');
streamifier.createReadStream(req.file.buffer).pipe(process.stdout);

将流作为文件读写

const streamifier = require('streamifier');
var writeStream = fs.createWriteStream('./uploads/test.png');
streamifier.createReadStream(req.file.buffer).pipe(writeStream);

参考:File information