nodejs express 处理上传

在Express中上传文件时不需要依赖其他的模块,文件上传可以很好工作于Express框架内。就像使用req.body一样,现在你可以使用req.files来获得你上传的文件中的具体信息。

如果你不需要指定上传文件的目录,那么你不需要对app.js做任何的改变,文件将默认上传到'/tmp'目录。但是如果你希望对你上传的文件指定特定目录,你仅仅需要修改一下内容:

app.use(express.bodyParser({uploadDir:'./uploads'}));

实验

客户端代码:

<form method="post" enctype="multipart/form-data" action="/upload">
  <input type="file" name="myfile">
  <input type="submit">
</form>

服务器端代码:

// 移动文件需要使用fs模块
var fs = require('fs');
app.post('/upload', function(req, res) {
     // 获得文件的临时路径
     var tmp_path = req.files.myfile.path;
    // 指定文件上传后的目录 - 示例为"images"目录。 
    var target_path = './public/images/' + req.files.myfile.name;
    // 移动文件
    fs.rename(tmp_path, target_path, function(err) {
      if (err) throw err;
      // 删除临时文件夹文件, 
      fs.unlink(tmp_path, function() {
         if (err) throw err;
         res.send('File uploaded to: ' + target_path + ' - ' + req.files.myfile.size + ' bytes');
      });
    });
  };

 

 

posted @ 2013-07-30 22:22  心首  阅读(459)  评论(0)    收藏  举报