node.js form 上传

安装formidable
pm install formidable@latest

客户端表单提交
<form class="form-signin" role="form" method="post" enctype='multipart/form-data'>
        <h2 class="form-signin-heading">上传文件</h2>
        <input id="fulAvatar" name="fulAvatar" type="file" class="form-control" />     
        <br/>
        <button id="btnSub" class="btn btn-lg btn-primary" type="submit">上 传</button>
      </form>
服务端指定路由规则
router.post('/upload', function(req, res) {

  var form = new formidable.IncomingForm();   //创建上传表单
      form.encoding = 'utf-8';        //设置编辑
      form.uploadDir = 'public' + AVATAR_UPLOAD_FOLDER;     //设置上传目录
      form.keepExtensions = true;     //保留后缀
      form.maxFieldsSize = 2 * 1024 * 1024;   //文件大小

    form.parse(req, function(err, fields, files) {
         if (err) {
          res.locals.error = err;
          res.render('index', { title: 'TITLE' });
          return;        
        }  
       
        console.log(fields);

        var extName = '';  //后缀名
        switch (files.fulAvatar.type) {
            case 'image/pjpeg':
                extName = 'jpg';
                break;
            case 'image/jpeg':
                extName = 'jpg';
                break;         
            case 'image/png':
                extName = 'png';
                break;
            case 'image/x-png':
                extName = 'png';
                break;         
        }

        if(extName.length == 0){
              res.locals.error = '只支持png和jpg格式图片';
              res.render('index', { title: TITLE });
              return;                   
        }

        var avatarName = Math.random() + '.' + extName;
        var newPath = form.uploadDir + avatarName;

        console.log(newPath);
        fs.renameSync(files.fulAvatar.path, newPath); 
    });

    res.render('upload', { title: 'Upload Demo' });      
});
View Code

 

posted @ 2014-12-29 18:09  一切从简  阅读(320)  评论(0编辑  收藏  举报