2015-07-21 38 views
0

我想上傳圖像使用angularjs或html5,Express.jsjs和mongodb.i有跟隨教程我無法上傳圖像上傳文件夾請一些人幫助我如何做that.below我已經給我的架構代碼如何使用nodejs將圖像上傳到文件夾並將路徑保存到mongodb中?

my schema 
var UserSchema = new Schema({ 
    UserName: { 
     type: String, 
     default: '', 
     trim: true, 
    }, 
    Avatar: { 
     type: String, 
     default: '', 
     trim: true 

    }, 
    Email: { 
     type: String, 
     default: '', 
     trim: true 
    }, 
    Password: { 
     type: String, 
     default: '', 
     trim: true 
    } 
}); 

我希望將圖像與用戶信息上傳

<form action="/upload" method="post" enctype="multipart/form-data"> 
    Select file to upload: 
    <input type="file" name="Avatar" id="fileToUpload"> 
    <input type="text" name="UserName" id="name"> 
    <input type="email" name="Email" id="email"> 
    <input type="password" name="Password" id="password"> 
    <input type="submit" value="Upload File" name="submit"> 
</form> 

一兩件事我想圖像存儲到如上傳和路徑的一些文件夾應該是店database.help我出去.thanks爲您的回覆

+0

你可以嘗試https://github.com/balderdashy/skipper - 任職對我來說就像魅力。 – dark4p

+0

請您分享您的路線和控制器 –

+0

uploadiing後我gettiing響應像這樣{「message」:「0文件上傳成功!」,「文件」:[]} –

回答

0

有一個名爲skipper的小節點模塊,可以處理文件上傳。安裝它:npm install skipper --save。由於使用的是表達自己的主文件應該是這個樣子:

var express = require('express'); 
var app = express(); 

app.use(require('skipper')()); 

app.post('/upload', function (req, res) { 
    req.file('avatar').upload(function (err, uploadedFiles) { 

    if (err) return res.send(500, err); 
    return res.json({ 
     message: uploadedFiles.length + ' file(s) uploaded successfully!', 
     files: uploadedFiles 
    }); 
    }); 
}); 

而且你的HTML表單應該是這個樣子:

<form action="/upload" method="post" enctype="multipart/form-data"> 
    Select file to upload: 
    <input type="file" name="avatar" id="fileToUpload"> 
    <input type="submit" value="Upload File" name="submit"> 
</form> 

注:這條路線將返回JSON對象。

+0

它可以上傳文件夾或數據庫 –

+0

請檢查船長的選項:https://github.com/balderdashy/skipper#options – dark4p

+0

上傳後,我得到這樣的回覆{「message」:「0文件上傳成功!」,「文件」: []} –

2

您可以使用nodejs formidable和fs-extra模塊來創建文件夾,以將圖像存儲在應用程序中。 試試這個

var fs = require('fs-extra'); 
var formidable = require('formidable'); 
var EmpDetail = require('../models/employee.model.js');//This line means that I am having my schema code. 
var util = require('util'); 


app.route('/upload').post(function(req,res){ 

res.json({success:true}); 

var empData = new EmpDetail();//Here I created object to call my schema values. 

var form = new formidable.IncomingForm(); 
console.log(req.body,'req.body'); 
form.parse(req,function(err,fields,files){ 
    console.log('dfgbfbf'); 
    util.inspect({fields: fields, files: files}); 
}); 

form.on('field',function(name,value){//This means your html input fields 
    console.log('fields',name,value); 
    if(name == 'fullName'){ 
     console.log('here',value); 
     empData.fullName = value; 
    } 
    if(name == 'fatherName'){ 
     empData.fatherName = value; 
    } 
    if(name == 'dt'){ 
     empData.DOB = value; 
    } 
}); 
form.on('file',function(field, file){//This means on click of file it gets that file. 
    console.log(file.name,'hjgjg'); 
    var temp = file.path; 
    console.log(temp,'temp',file.name); 
    var fileName = file.name; 
     var fileName = file.name; 
     var location  = 'images/'; 
     var cpLocation = 'empDetails/images/'; 
     empData.imgSize = file.size; 
     empData.imgType = file.type; 
     empData.picFile = location+fileName;//Here PicFile is name of Avatar in model 
fs.copy(temp,cpLocation+fileName ,function(err){//This means it create a folder and name of the image in your app. 
     if(err) 
     { 
      console.log(err); 
     } 
    }); 

}); 
form.on('end',function(fields, files){ 

     empData.save(function(err,resobj){ 
      if(err) 
      {  
       throw err; 
      } 
     }); 
}); 
}); 
相關問題