2014-12-08 17 views
8

Wiem, że istnieje już sporo wątków na ten temat, ale niestety nie znalazłem odpowiedzi do tej pory. Używam angular.js z przykładowym kodem z http://angular-js.in/image-upload/, aby uzyskać obraz od klienta. Ta część działaZapisywanie obrazu za pomocą mangusty

teraz do części node/MongoDB, oto mój model backend:

var userSchema = new mongoose.Schema({ 
    avatar: { data: Buffer, contentType: String }, 
    // ... 
}); 

module.exports = mongoose.model('User', userSchema); 

i mój kod węzeł:

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) {/* ... */ }); 

i mój angularCtrl:

var foo = { 
    image: image, 
    imageName: image.name, 
}; 

$http.post('/api/users', {data: foo }) 
    .success(function (result) { 
    /*...*/}); 

Oprócz req.body.data.image próbowałem wielu różnych wariantów, takich jak req.body.data.image.dataURL, req.body.data.image.dat aURL.data, ale nic nie działało tak daleko. My Logging of req.body.data.image pokazuje:

{ 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..... 

Jak mogę zapisać obraz w bazie danych?

edit

Próbowałam zapisać wszystko po base64, z req.body.data.image.dataURL w awatarze jak ten:

var split = req.body.data.image.dataURL.split('base64,'); 
var type = split[0]; 
var data = split[1]; 

var avatar = { 
    data: type, 
    contentType:'image/png' 
}; 

zapisywania wiadomości jest nadal:

user.avatar = avatar 
user.save(function (err, user) {} 

Ale wciąż błąd TypeError: Cannot set property 'avatar' of null

+0

więc chcesz zapisać dane Blob w Mongo, lub po prostu ścieżka obrazu na serwerze? – Ravi

+0

Chcę zapisać blob w Mongo – Markus

+0

hmmm, dane pliku mogą znajdować się w twoim obiekcie 'req.files'. I odsyłaj ['GridFS'] (http://www.mongodb.org/display/DOCS/GridFS) do przechowywania danych binarnych w mongo. – Ravi

Odpowiedz

Powiązane problemy