我最近打开了另一个关于如何使用 node.js/mongoose 在 mongodb 数据库中存储图像的线程。 (使用猫鼬保存图像 https://stackoverflow.com/questions/27353346/saving-image-with-mongoose)
我有点成功了,但我很确定我目前的方式不是正确的方式。这也可能是我无法在前端显示存储的图像的原因。
我有两个问题:
- 如何使用当前配置显示图像
- 由于我的代码此时显然是错误的,我仍然想知道使用 mongoDB 存储图像的方法是什么。我是否应该只存储 URL 并将图像保存在我的文件服务器上?有谁有关于如何使用的工作示例
GridFS
与角度/节点/猫鼬?
这是我将图像保存到数据库的代码:
var split = req.body.data.image.dataURL.split('base64,');
// ... split until I get 'image/png' and the binary of my image
var avatar = {
data: data,
contentType: type
};
models.UserImages.create({ avatar: avatar, /* ... */})
和我的用于加载图像的 Angular Ctrl:
User.findAvatarByUser(data).success(function (data) {
$scope.avatar = data[0].avatar.data;
});
这显示了 chrome 中的日志记录,包括。我得到的错误:
任何帮助将非常感激!
edit:在lostPixels提示之后,我尝试将图像保存到FS。经过一些麻烦之后我终于让它工作了。目前我会将图像保存到我的文件系统中,直到我知道我真正想如何处理这个问题。
如果有人遇到同样的问题,以下是我在后端保存图像的方法(我在 stackoverflow 上的某个地方找到了它,但不幸的是我丢失了将信用归功于正确的人的链接,抱歉;))
fs.writeFile(newImageLocation, data, 'base64', function (err) {
if (err) throw err
console.log('File saved.')
});