在此用的是ejs的模板,在index.ejs中实现页面的显示
index.ejs
<%- include header %>标题:<%= post.title %>
图片:<%= post.src %>
<%= post.src %> alt="图呢??快给我!!"> <%- 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中的路径不是一样的 };