在此用的是ejs的模板,在index.ejs中实现页面的显示
index.ejs
<%- include header %>
<p>
标题:<%= post.title %>
<p>图片:<%= post.src %></p>
<img src= <%= post.src %> alt="图呢??快给我!!">
<!-- 这里的路径根目录都是指的public文件夹 -->
</p>
<%- include footer %>
routes/index.js文件
var multer = require('multer');
....//这里只贴跟multer有关的代码,关于multer的用法,可以参考本博客中的另一篇
var storage = multer.diskStorage({
destination:function(req,file,cb){//设置存储目标路径
cb(null,path.join(path.resolve('./'),"/public/images"))
},//cb指的是callback
filename:function(req,file,cb){
cb(null,file.fieldname+"-"+ Date.now())
}//为啥加了这个filename之后会出现两个文件呢?
});
var upload = multer({storage:storage});
....
//post请求可以这样写
app.post('/upload',upload.single("file"),function(req,res,next) {
var filename = req.file.filename
console.log(filename+"文件名");
res.redirect('/upload');/*如果在此处不做操作的话,nodejs会重复执行post到的upload请求
导致在目标文件夹下生成多个文件(一般是两个,相当于/upload页刷新了一遍)*/
});
如果要实现同步存储到数据库中,此处用mongoose实现的,mongoose的model,entity什么的就不仔细说了
app.post("/post",upload.single("file"),function(req,res){
var filename = (req.file.filename);
var issue = {
username:req.session.user,
title:req.body.title,
post:req.body.post,
time:new Date(),
src:path.join("/images",filename)
//注意,此处的路径一定要弄清楚,它和上面storage中的路径不是一样的
};