express4.0以上版本文件上传
发现很多node的书介绍express文件上传都是基于3.*版本的,
现在express的版本都是4.+的,很多以前的代码跑不动了
所以自己折腾了个小demo
实现了限制上传文件种类和大小
例子是基于formidable模块的
github地址为https://github.com/felixge/node-formidable
var express = require('express'); var formidable = require('formidable'); var router = express.Router(); var fs =require('fs'); /* GET home page. */ router.get('/', function(req, res) { res.render('index', { title: 'Express' }); }); router.post('/', function(req, res) { //设置返回字符串编码 res.header( 'Content-Type','text/javascript;charset=utf-8'); //new一个formidable.IncomingForm(); var form = new formidable.IncomingForm(); //设置临时文件存放的路径 form.uploadDir = "./routes"; //设置上传数据的编码 form.encoding='utf-8'; //设置是否保持上传文件的拓展名 form.keepExtensions = true; //文件上传过程中触发可以做上传进度查看 form.on('progress', function(bytesReceived, bytesExpected) { if(bytesExpected>1024*1024*3){//bytesExpected为等待上传的文件的大小,超过大小就返回错手动触发error this.emit('error',"文件过大") }; }); //返回非文件的部分数据 form.on('field', function(name, value) { console.log(name+" "+value) }); //文件上传成功后触发 form.on('file', function(name, file) { if(file.type!='text/css'){//文件类型不是合法的 this.emit('error',"不允许的类型");//手动触发error fs.unlink(file.path)//删掉临时文件 } else { //成功上传,把临时文件移动到public文件夹下面 fs.renameSync(file.path, "./public/" + file.name); } }); //流程正常处理 form.on('end',function(){ res.end('上传成功'); }); //出错 form.on('error',function(err){ res.end(err); }) //执行文件上传任务 form.parse(req,function(){ }); }); module.exports = router;demo下载地址 http://download.csdn.net/detail/a5799694/8109927
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。