我知道這個話題已經有不少線索了,但不幸的是我直到現在才找到答案。我使用來自http://angular-js.in/image-upload/的示例代碼中的angular.js從客戶端獲取圖像。這部分工作用貓鼬保存圖片
現在到了節點/ mongodb的一部分,這裏是我的後端模式:
var userSchema = new mongoose.Schema({
avatar: { data: Buffer, contentType: String },
// ...
});
module.exports = mongoose.model('User', userSchema);
和我結點代碼:
exports.createAvatar = function (req, res) {
var avatar = {
data: req.body.data.image, // see below
contentType:'image/png'
}
models.DUser
.findById(index.findUserId(req))
.exec(
function (err, user) {
user.avatar = avatar;
// ...
user.save(function (err, user) {/* ... */ });
和我angularCtrl:
var foo = {
image: image,
imageName: image.name,
};
$http.post('/api/users', {data: foo })
.success(function (result) {
/*...*/});
除了req.body.data.image之外,我嘗試了許多不同的變體,例如req.body.data.image.dataURL,req.body.data.image.dat aURL.data,但迄今爲止沒有任何工作。我的req.body.data.image記錄顯示:
{ file:
{ webkitRelativePath: '',
lastModified: 1411073963000,
lastModifiedDate: '2014-09-18T20:59:23.000Z',
name: '3770316278.png',
type: 'image/png',
size: 32493 },
url: 'blob:http%3A//127.0.0.1%3A3000/cb20debc-8a3a-468f-ab5c-39299f7ec52b',
dataURL: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAACHCAYAAAC.....
如何將圖像保存到數據庫?
編輯
我試圖從req.body.data.image.dataURL
base64,
後保存到一切頭像是這樣的:
var split = req.body.data.image.dataURL.split('base64,');
var type = split[0];
var data = split[1];
var avatar = {
data: type,
contentType:'image/png'
};
保存郵件仍然是:
user.avatar = avatar
user.save(function (err, user) {}
但我仍然得到錯誤TypeError: Cannot set property 'avatar' of null
所以要BLOB數據存儲到蒙戈,或者在服務器上的圖像的人的路? – Ravi 2014-12-08 08:00:13
我想將blob存入mongo – Markus 2014-12-08 08:06:39
hmmm,文件數據可能在你的'req.files'對象中。並且參考['GridFS'](http://www.mongodb.org/display/DOCS/GridFS)在mongo中存儲二進制數據。 – Ravi 2014-12-08 08:24:20