Node.js学习笔记之文件上传

推荐使用第三方的模块:formidable

一丶使用方法

   1丶推荐一个第三方模块管理的平台 https://www.npmjs.com/,里边有各种我们需要的模块,formidable模块就可一在里边找到;

 2丶进入该平台搜formidable即可

   3丶具体实现功能看代码

var formidable = require('formidable'),    //引入第三的文件上传模块
    http = require('http'),
    util = require('util'),
    path = require('path'),           //path和fs模块引入是为了给上传的文件改名,默认上传的文件是没有后缀名的
    fs = require('fs')    
 
var server = http.createServer(function(req, res) {
  if (req.url == '/upload' && req.method.toLowerCase() == 'post') {   //文件上传的提交方式必须为post,
    var form = new formidable.IncomingForm();
	  form.uploadDir = "./dir";              //设置文件上传的接受文件夹
     form.parse(req, function(err, fields, files) {
      var oldpath = __dirname+'/'+files.upload.path
      var newpath = __dirname +'/dir/'+ parseInt(Math.random()*1000+1000)+path.extname(files.upload.name);
      fs.rename(oldpath, newpath, function(err){       //上传完毕执行文件改名,该方法为fs模块rename
          if(err){throw Error("改名失败")}
           res.writeHead(200, {'content-type': 'text/plain'});
           res.end('success');           
      })
    });
    return;
  }
 
  res.writeHead(200, {'content-type': 'text/html'});
  res.end(
    '<form action="/upload" enctype="multipart/form-data" method="post">'+
    '<input type="text" name="title"><br>'+
    '<input type="file" name="upload" multiple="multiple"><br>'+
    '<input type="submit" value="Upload">'+
    '</form>'
  );
})
server.listen(3000,'192.168.5.69');  //监听到自己的电脑的ip

  

 

 

posted @ 2017-07-04 11:06  ConfigSzy  阅读(235)  评论(0编辑  收藏  举报