在 MongoDB 中使用 GridFS 保存来自 express 的缓冲区
Save buffer from express with GridFS in MongoDB
所以我试图通过 GridFS 在我的 MongoDB 中保存作为多部分发送的图像文件。
我正在使用 multer 和 memoryStorage 选项。
let upload = multer({ storage: multer.memoryStorage() }).single('imageFile');
app.use(upload);
在路由中,我这样访问缓冲区:
let buffer: Buffer = req.file.buffer;
这工作正常,我正在努力将此缓冲区保存到我的 MongoDB。
let writeStream = this.gfs.createWriteStream({
mode: 'w',
filename: 'Image',
content_type: 'image/png'
});
streamifier.createReadStream(buffer).pipe(writeStream);
这就是我尝试在 MongoDB 中保存缓冲区的方式。
Mongoose: fs.files.ensureIndex([ [ 'filename', 1 ] ], { w: 1 })
Mongoose: fs.chunks.ensureIndex([ [ 'files_id', 1 ], [ 'n', 1 ] ], { w: 1, unique: true })
Mongoose: fs.files.findOne({ _id: ObjectId("597089c973179c0138eef7ae") }, { w: 1, readPreference: 'primary' })
这是我从 MongoDB 获得的日志。但是数据库中没有存储任何内容。
有人有解决办法吗?已经尝试 this solution 但它对我不起作用。
显然问题不是我发布的代码。
它可以工作,但要确保你的 gfs 加载了 MongoDB 实例而不是连接。
所以我试图通过 GridFS 在我的 MongoDB 中保存作为多部分发送的图像文件。 我正在使用 multer 和 memoryStorage 选项。
let upload = multer({ storage: multer.memoryStorage() }).single('imageFile');
app.use(upload);
在路由中,我这样访问缓冲区:
let buffer: Buffer = req.file.buffer;
这工作正常,我正在努力将此缓冲区保存到我的 MongoDB。
let writeStream = this.gfs.createWriteStream({
mode: 'w',
filename: 'Image',
content_type: 'image/png'
});
streamifier.createReadStream(buffer).pipe(writeStream);
这就是我尝试在 MongoDB 中保存缓冲区的方式。
Mongoose: fs.files.ensureIndex([ [ 'filename', 1 ] ], { w: 1 })
Mongoose: fs.chunks.ensureIndex([ [ 'files_id', 1 ], [ 'n', 1 ] ], { w: 1, unique: true })
Mongoose: fs.files.findOne({ _id: ObjectId("597089c973179c0138eef7ae") }, { w: 1, readPreference: 'primary' })
这是我从 MongoDB 获得的日志。但是数据库中没有存储任何内容。
有人有解决办法吗?已经尝试 this solution 但它对我不起作用。
显然问题不是我发布的代码。 它可以工作,但要确保你的 gfs 加载了 MongoDB 实例而不是连接。