如何上传文件,然后在Node.Js Express应用程序中显示其内容?

时间:2015-01-14 18:35:58

标签: node.js express

我试图在很长一段时间内找到这个问题的答案:我需要通过我的Node.Js express app上传text / html文件,并将其内容保存到变量中以便进一步处理。

我当然可以创建多部分表单并发布内容,但到目前为止我可以访问的只有req.files,其中包含有关文件的信息,但不包含实际内容。

如何从文件中获取实际的text / html内容?

我不想将其保存到我的服务器,只是将内容传递给我的应用程序并删除该文件,因此我不想使用像formidable这样的模块。

有人可以帮忙吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

将{strong> multer https://github.com/expressjs/multerinMemory: true选项一起使用。

作为一个粗略的例子,你想要做这样的事情。

app.post('test', function(req, res, next) {
  var result = ''; 
  multer({
    inMemory: true,
    onFileUploadData: function(file, data) {
      result += data;
    },  
    onFileUploadComplete: function(file) {
      console.log(result); // This is what you want
    }   
  })(req, res, next);
});

答案 1 :(得分:4)

默认情况下,文件保存在临时文件夹中(可能是/ tmp)。您需要打开文件,读取其内容,然后将其删除。

您希望使用此API:http://nodejs.org/api/fs.html

你可以这样做:

fs = require('fs');

fs.readFile(req.files.path, function (err, data) {
  if (err) throw err;
  // data will contain your file contents
  console.log(data)

  // delete file
  fs.unlink(req.files.path, function (err) {
    if (err) throw err;
    console.log('successfully deleted ' + req.files.path);
  });      
});