node.js - 从 MongoDB 读取二进制文件
问题描述
我目前正在开展一个项目,该项目涉及上传图像和视频,然后将它们保存到 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'
从上面的片段中,filename
那里列出了,但我的问题实际上是打开这个文件并进行一些图像处理。任何帮助,将不胜感激。如果我尝试使用data.toString('base64')
它输出转换二进制数据[object ArrayBuffer]
解决方案
data 属性实际上是ArrayBuffer而不是 Buffer。如果您参考Buffer上的文档。你应该能够做到
Buffer.from(data).toString('base64')
推荐阅读
- java - 如何测试返回复杂对象的函数?
- javascript - Firestore 对 Material UI 表的实时更新
- python - 如何减去两个数据框行
- python - ValueError:视图未返回 HttpResponse 对象。它返回 None 而不是
- python - 为什么 Python Web 应用程序抛出 *AttributeError: 'str' object has no attribute 'Div'*?
- coldfusion - 用于 Swagger OpenAPI 规范的 ColdFusion 客户端
- android - 无法获取“https://jcenter.bintray.com/com/android/tools/build/gradle/4.0.0/gradle-4.0.0.pom”
- c# - 如何解决'关键字不支持:'元数据'
- stb-image - 使用 stbi_set_flip_vertically_on_load 函数时未解决的错误
- python - 在 Python 中使用函数或类实现装饰器时的不同行为