Bu konu hakkında epeyce konu olduğunu biliyorum, ancak maalesef şu ana kadar cevabımı bulamadım. İstemciden görüntü almak için angular.js'yi http://angular-js.in/image-upload/ örnek kodla birlikte kullanıyorum.Görüntüyü mongoose ile kaydetme
var userSchema = new mongoose.Schema({
avatar: { data: Buffer, contentType: String },
// ...
});
module.exports = mongoose.model('User', userSchema);
ve benim düğüm kodu:
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) {/* ... */ });
ve benim angularCtrl:
var foo = {
image: image,
imageName: image.name,
};
$http.post('/api/users', {data: foo })
.success(function (result) {
/*...*/});
Bu bölüm düğümü/mongodb kısmına Şimdi
çalışır, işte arka uç modeli Req.body.data.image'in yanı sıra req.body.data.image.dataURL, req.body.data.image.dat gibi birçok farklı varyasyon denedim. aURL.data, ama hiçbir şey şimdiye kadar işe yaramadı. req.body.data.image Benim Günlüğü gösterir:{ 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.....
nasıl veritabanına görüntüyü kaydedebilirsiniz ? hala
var split = req.body.data.image.dataURL.split('base64,');
var type = split[0];
var data = split[1];
var avatar = {
data: type,
contentType:'image/png'
};
kaydetmek mesajı: düzenlemek
böyle avatar içine req.body.data.image.dataURL
den base64,
sonra her şeyi kurtarmaya çalıştı
user.avatar = avatar
user.save(function (err, user) {}
Ama hala olsun hata TypeError: Cannot set property 'avatar' of null
böylece Mongo'da içine Blob veri depolamak istediğinizde veya sunucudaki görüntünün sadece yol? – Ravi
Blogu mongo – Markus
hmmm içine kaydetmek istiyorum, dosya verileri 'req.files' nesnesinde olabilir. Ve mongo'da ikili verileri depolamak için ['GridFS'] 'e (http://www.mongodb.org/display/DOCS/GridFS) başvurun. – Ravi