您的位置:首页 > Web前端 > Node.js

Node.js 博客实例(三)增加文件上传功能

2014-08-26 15:30 791 查看
原教程
https://github.com/nswbmw/N-blog/wiki/_pages的第三章
上传文件目前有三种方法:

使用 Express 自带的文件上传功能,不涉及数据库

使用 Formidable 外部模块,不涉及数据库

上传到 MongoDB ,涉及数据库

这里使用第一种,用户将文件上,存储于:blog/public/images/目录下。

blog/views/header.ejs 在<span><a title="发表" href="/post">post</a</span>前添加一行:

<span><a title="上传" href="/upload">upload</a</span>
index.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