Node.js 博客实例添加文件上传功能

Posted zhchoutai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js 博客实例添加文件上传功能相关的知识,希望对你有一定的参考价值。

原教程 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 博客实例添加文件上传功能的主要内容,如果未能解决你的问题,请参考以下文章

Node.js——request/get实现评论功能

在 Backand 如何从 node.js 操作上传文件?

使用 Multer 将 csv 文件上传到 Node.js 时出现意外字段

Git-Github-Hexo搭建博客

Node.js之文件下载

Node.js 博客实例简单博客