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
więc chcesz zapisać dane Blob w Mongo, lub po prostu ścieżka obrazu na serwerze? – Ravi
Chcę zapisać blob w Mongo – Markus
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