multer上传文件并在前台显示

在此用的是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中的路径不是一样的
		};


转载于:https://my.oschina.net/boogoogle/blog/547398

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值