2014-09-24 12 views
0

我希望能夠上傳一張照片給用戶對象的個人資料照片。我已經用multiparty上傳了過去的照片,但現在我是angularjs的新手,並試圖弄清楚這是如何完成的。如何上傳與Angularjs用戶個人資料照片,MongoDB的數據庫(用戶模式)(平均堆棧)?

下面是我如何在過去使用的多:

型號:

User.prototype.save = function(fields, files, cb){ 
    var properties = Object.keys(fields), 
     self  = this; 

    properties.forEach(function(property){ 
    self[property] = fields[property][0]; 
    }); 

    var oldphotos = this.photos, 
     newphotos = moveFiles(files, oldphotos.length, '/img/' + this._id); 
    this.photos = oldphotos.concat(newphotos); 
    this.location = {name:this.loc, lat:this.lat, lng:this.lng}; 
    this.isVisible = (this.isVisible === 'true') ? true : false; 
    User.collection.save(this, cb); 
}; 

module.exports = User; 

function moveFiles(files, count, relDir){ 
    var baseDir = __dirname + '/../static', 
     absDir = baseDir + relDir; 

    if(!fs.existsSync(absDir)){fs.mkdirSync(absDir);} 

    var tmpPhotos = files.photos.map(function(photo, index){ 
    if(!photo.size){return;} 

    var ext  = path.extname(photo.path), 
     name  = count + index + ext, 
     absPath = absDir + '/' + name, 
     relPath = relDir + '/' + name; 

    fs.renameSync(photo.path, absPath); 
    return relPath; 
    }); 

控制器:

exports.update = function(req, res){ 
    var form = new mp.Form(); 
    form.parse(req, function(err, fields, files){ 
    User.findById(res.locals.user._id, function(err, user){ 
     user.save(fields, files, function(err, cb){ 
     res.redirect('/profile'); 
     }); 
    }); 
    }); 
}; 

觀點:

.form-group 
      label(for='photos') Photos 
      input.form-control#photo(type='file', name='photos', multiple=true) 
     .form-group 

原諒我「noobness 「,但對於基礎項目我已經使用angularjs完成了,我基本上在客戶端使用.factory來鏡像控制器。在服務器端控制器,而不是重定向,我做了一個res.send併發布在路由器。然而,我不太清楚如何做到這一點與angularjs得到這同樣的影響工作,並上傳一張照片..

在此先感謝。另外,我使用mongoDB而不使用mongooose。我也使用ngroute currenlty,而不是使用angularjs的UI路由器。基本上,我想弄清楚如何在angularjs中使用這整個user.protype.save函數..一直在努力.. 叔叔

回答

0

退房ng-flow。這是基於Flow.js庫的一個很好的擴展,應該給你你需要的東西。

相關問題