【问题标题】:Reading binary files from MongoDB从 MongoDB 读取二进制文件
【发布时间】:2021-01-07 03:57:24
【问题描述】:

我目前正在从事一个项目,该项目涉及上传图像和视频,然后将它们保存到 MongoDB。我正在使用 multer 和 GridFs 来实现这一点。图像和视频以二进制格式保存。现在,我有一个小问题,我希望能够打开图像文件并使用 Jimp 进行一些图像处理,但我不知道如何实现。

这是从数据库返回的内容,即 fs.chunk 集合

found: {
    _id: 5ff5fe1f6461621e34f124d5,
    files_id: 5ff5fe1f6461621e34f124d4,
    n: 0,
    data: Binary {
      _bsontype: 'Binary',
      sub_type: 0,
      position: 261120,
      buffer: <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 01 00 48 00 48 00 00 ff e2 0c 58 49 43 43 5f 50 52 4f 46 49 4c 45 00 01 01 00 00 0c 48 4c 69 6e 6f 02 10 00 00 ... 261070 more bytes>
    }
  }

这是存储在fs.files 集合中的内容

fieldname: 'avatar',
  originalname: 'CMG - Bright Future Blaze.jpg',
  encoding: '7bit',
  mimetype: 'image/jpeg',
  id: 5ff5fabcbcd9bb26c8896ce6,
  filename: 'ef96af4bd209f827963aa9580196e453.jpg',
  metadata: null,
  bucketName: 'uploads',
  chunkSize: 261120,
  size: 391319,
  md5: '10782da2083a3f1f201ba6f33748da62',
  uploadDate: 2021-01-06T18:00:28.382Z,
  contentType: 'image/jpeg'

从上面的 sn-p 中,filename 在那里列出,但我的问题实际上是打开这个文件并进行一些图像处理。任何帮助,将不胜感激。如果我尝试使用data.toString('base64') 转换二进制数据,它会输出[object ArrayBuffer]

【问题讨论】:

    标签: node.js mongodb express multer


    【解决方案1】:

    data属性实际上是一个ArrayBuffer而不是一个Buffer。如果您参考Buffer 上的文档。你应该可以做到

    Buffer.from(data).toString('base64')
    

    【讨论】:

    • 我注意到它是一个 ArrayBuffer,所以我想我需要先将它转换为缓冲区,请问您知道我该怎么做吗?
    • 按照我发布的示例代码。您也可以参考我链接的文档。
    猜你喜欢
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2020-07-14
    • 2018-08-24
    • 2015-07-27
    • 1970-01-01
    相关资源
    最近更新 更多