2016-02-09 36 views
0

我有一個表單,用戶可以通過它來上傳圖片。我想通過nodejs上傳它,保存在數據庫(mongodb)中並顯示回模板(EJS)。在Nodejs/Express中上傳圖片的最簡單方法是什麼

我讀了關於gridFS,但我正在尋找最簡單的方式,只是上載圖像。

EJS:

<h2>Enter your Data</h2> 
<form action="/test" method="POST"> 
<input type="username" placeholder="username" name="Username" /> <br /> 
<input type="text" placeholder="title" name="Name" /><br /> 
<textarea name="Description" ></textarea><br /> 
<input type="link" name="Clink"/><br /> 
<input type="file" name="imgUpload"/><br /> 
<input type="submit" value="Submit" id="btn"/> 
</form> 



var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var mongoose = require('mongoose'); 
var fs = require('fs'); 

var routes = require('./routes/index'); 
var users = require('./routes/users'); 
var about = require('./routes/about'); 
//var contact = require('./routes/contact'); 
//var blogData = require('./routes/blogData'); 

var app = express(); 


//Connect DB 
mongoose.connect('mongodb://localhost:27017/dataTest'); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', routes); 
app.use('/users', users); 
app.use('/about', about); 
//app.use('/contact', contact); 
//app.use('/blogData', blogData); 

//Scheme 
var Schema = new mongoose.Schema({ 
    _id : String, 
    Name : String, 
    Description : String, 
    Clink : String 
}); 

//Model 
var BlogPost = mongoose.model('Blog', Schema); 

app.post('/test',function(req,res){ 
    new BlogPost({ 
     _id : req.body.Username, 
     Name : req.body.Name, 
     Description : req.body.Description, 
     Clink : req.body.Clink 
    }).save(function(err, doc){ 
    if(err){ 
     console.log('boo'); 
    } 
    else{ 
     console.log('inner'); 
     res.redirect('contact'); 
     res.end(); 
     } 
    }) 
}); 
+0

https://github.com/ expressjs/multer –

回答

2

要上傳的圖片中的node.js,你可以簡單地使用的base64編碼,並插入到MongoDB的。

雖然檢索,你可以取base64編碼的圖像,並將其轉換爲圖像格式。

<input type="file" id="fileinput" name ="image" multiple="multiple" accept="image/*" /> 

首先你的圖像轉換爲Base64並保存到數據庫:

router.post('/upload',function(req,res){ 
var base64ToBuffer = new Buffer(req.image, 'base64');//Convert to base64 

//Write your insertcode of MongoDb 

res.end("Image uploaded Successfully"); 
}); 

之後顯示的圖像,你可以寫另一個路由器:

router.get('/showImage', function(req, res) { 
    // Write code to retrieve image base64 code 
    var imageBase64; 
    render image to jade template 
}) 
+0

謝謝,但我如何在EJS模板中渲染圖像?通過使用imageBase64變量?我們不需要將其存儲在數據庫中? –

+0

實際上,我沒有EJS模板知識,但是您可以將您的EJS模板引擎更改爲HTML,以便您可以將HTML用作前端。 –

+0

試試這個鏈接http://stackoverflow.com/questions/30963743/display-dynamically-an-image-using-express-and-ejs –

相關問題