【发布时间】:2015-03-11 04:42:57
【问题描述】:
以下代码按预期工作:它读取已使用 multer [https://github.com/expressjs/multer] 上传的文件并将其流式传输到 gridfs。我也可以从 gridfs 中蒸出这个。
var target = gfs.createWriteStream({
filename: fileItem.originalname,
mode: 'w',
metadata: metaData
});
fs.createReadStream(tempFile)
.on('end', function () {
console.log('File read and stored');
})
.on('error', function (err) {
console.log('Error handling file ' + err);
})
.pipe(target);
// Attach new file to document list
target.on('close', function (file) {
filesUploadedList.push(file._id);
fileItem 是通过迭代上传的文件req.files.file 获得的。
但是,我正在尝试找出 multer 的 inMemory 选项。如果我将此设置为 true,则 fileItem 将填充缓冲区。请注意,如果没有这个选项,fileItem 的缓冲区/内容是空的,这就是为什么在上面的代码中它从fileItem.location 读取的原因。
用内容填充目标的最佳方法是什么? fs.createReadStream 正在做管道。
谢谢。
J
【问题讨论】: