【问题标题】:How to upload a file and then display its contents in Node.Js Express app?如何上传文件,然后在 Node.Js Express 应用程序中显示其内容?
【发布时间】:2015-01-15 03:47:23
【问题描述】:

我一直在寻找这个问题的答案:我需要通过我的 Node.Js express 应用上传一个 text/html 文件并将其内容保存到一个变量中以供进一步处理。

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

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

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

有人可以帮忙吗?

谢谢!

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    该文件默认保存在一个临时文件夹中(可能是 /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);
      });      
    });
    

    【讨论】:

    • 非常感谢!我已经尝试解决它好几个小时了……你知道为什么人们花了这么长时间才回答这个问题吗?这只是一个愚蠢的问题还是我没有正确表述它?
    【解决方案2】:

    使用 multer https://github.com/expressjs/multer 和选项 inMemory: 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);
    });
    

    【讨论】:

    • 好的,谢谢,但是如何访问文件的内容?在没有那个模块的情况下,我仍然看到与在 req.files 上看到的相同的东西......
    • 我添加了一个粗略的例子来帮助你。
    • 谢谢,但如果我想从应用程序的另一部分调用该内容怎么办?
    • 使用节点内存缓存模块或redis,否则将文件临时存储在磁盘上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    相关资源
    最近更新 更多