当前位置 : 主页 > 网页制作 > Nodejs >

node.js – 将multer与inmemory选项一起使用并流式传输到mongodb gridfs中

来源:互联网 收集:自由互联 发布时间:2021-06-16
下面的代码片段按预期工作:它读取使用multer [ https://github.com/expressjs/multer]上传的文件并将其流式传输到gridfs中.我也能够将其从gridfs中抽出来. var target = gfs.createWriteStream({ filename: file
下面的代码片段按预期工作:它读取使用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正在进行管道处理.

谢谢.

Ĵ

您可以使用 streamifier完成此操作.代码看起来应如下所示:

streamifier.createReadStream(fileItem.buffer).pipe(target);

Multer不向磁盘写入任何内容,目标现在填充了正在上载的文件的缓冲区/内容.

网友评论