首页 > 代码库 > Node.js 博客实例(三)增加文件上传功能
Node.js 博客实例(三)增加文件上传功能
原教程https://github.com/nswbmw/N-blog/wiki/_pages的第三章
上传文件目前有三种方法:
使用 Express 自带的文件上传功能,不涉及数据库
使用 Formidable 外部模块,不涉及数据库
上传到 MongoDB ,涉及数据库
这里使用第一种,用户将文件上,存储于:blog/public/images/目录下。
blog/views/header.ejs 在<span><a title="发表" href=http://www.mamicode.com/"/post">post前添加一行:
<span><a title="上传" href=http://www.mamicode.com/"/upload">uploadindex.js添加代码:
fs=require('fs'),以及:
<span style="white-space:pre"> </span>app.get('/upload',checkLogin); app.get('/upload',function(req,res){ res.render('upload',{ title:'文件上传', user:req.session.user, success:req.flash('success').toString(), error:req.flash('error').toString() }); }); app.post('/upload',checkLogin); app.post('/upload',function(req,res){ for(var i in req.files){ if(req.files[i].size==0){ //使用同步方式删除一个文件 fs.unlinkSync(req.files[i].path); console.log("successfully removed an empty file"); }else{ var target_path='./blog/public/images/'+req.files[i].name; //使用同步方式重命名一个文件 fs.renameSync(req.files[i].path,target_path); console.log('successfully rename a file'); } } req.flash('success','文件上传成功'); res.redirect('/upload'); });blog/views/下新建upload.ejs:
<%- include header %> <form method='post' action='/upload' enctype='multipart/form-data' > <input type="file" name="file1" multiple="multiple" /><br> <input type="file" name="file2" multiple="multiple" /><br> <input type="file" name="file3" multiple="multiple" /><br> <input type="file" name="file4" multiple="multiple" /><br> <input type="file" name="file5" multiple="multiple" /><br> <input type="submit" /> </form> <%- include footer %>blog/app.js中app.use(express.bodyParser());改为:
//保留上传文件的后缀名,并把上传目录设置为 /public/images app.use(express.bodyParser({ keepExtensions: true, uploadDir: './blog/public/images' }));此时我们上传一张图片:123.png
提交:
发表博客,在博客里引用照片:
发表:
Node.js 博客实例(三)增加文件上传功能
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。