2015-07-21 89 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; 
      } 
     }); 
}); 
}); 
相关问题