【问题标题】:Save buffer from express with GridFS in MongoDB在 MongoDB 中使用 GridFS 从 express 中保存缓冲区
【发布时间】:2017-07-20 10:51:08
【问题描述】:

所以我试图通过 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,但它对我不起作用。

【问题讨论】:

    标签: mongodb express typescript multipartform-data gridfs


    【解决方案1】:

    显然问题不在于我发布的代码。 它可以工作,但请确保您的 gfs 加载了 MongoDB 实例而不是连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-19
      • 1970-01-01
      • 1970-01-01
      • 2015-03-17
      • 2022-01-01
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多