将输入写入Node js中的输出文本

时间:2016-06-10 16:02:12

标签: node.js

我对节点js相当新。现在我正在运行一个Web服务器,客户端必须在其中键入其名称并创建一个配置文件。但是,我希望将输入的客户端名称写入output.txt文件。我知道如何将hello world写入输出文本,但不知道如何将客户端的输入直接写入输出文本文件。

    var http = require('http');
    var postHTML = 
    '<html><head><title>Post Example</title></head>' +
    '<body>' +
    '<form method="post">' +
    'Input 1: <input name="input1"><br>' +
    'Input 2: <input name="input2"><br>' +
    '<input type="submit">' +
    '</form>' +
    '</body></html>';

    http.createServer(function (req, res) {
     var body = "";
       req.on('data', function (chunk) {
      body += chunk;
      });
     req.on('end', function () {
       console.log('POSTed: ' + body);
      res.writeHead(200);
     res.end(postHTML);
      });
    }).listen(8080);

我希望输入1的任何用户类型都保存到输出文件

3 个答案:

答案 0 :(得分:1)

@patidar我对节点很新,我刚刚提出了一个解决方案。它可能不会给你正确的答案,但可以采用一种方法。

希望这会有所帮助:

 var http = require('http');
 var qs = require('querystring');
 var fs = require('fs');
    var postHTML = 
    '<html><head><title>Post Example</title></head>' +
    '<body>' +
    '<form method="post">' +
    'Input 1: <input name="input1"><br>' +
    'Input 2: <input name="input2"><br>' +
    '<input type="submit">' +
    '</form>' +
    '</body></html>';

    http.createServer(function (req, res) {
     var body = "";
       req.on('data', function (chunk) {
      body += chunk;

      console.log(body);
      });
     req.on('end', function () {
       console.log('POSTed: ' + body);
       var post = qs.parse(body);
       console.log(post.input1);
       fs.writeFile("result_posted.txt",post.input1);
      res.writeHead(200);
     res.end(postHTML);
      });
    }).listen(8080);

它正在将数据写入文件,但问题是您的代码是两次发布数据,因此它已被覆盖。

如果有人想编辑帖子,请随时编辑。 感谢。

答案 1 :(得分:0)

您可以使用process.stdin从命令行中读取。以下示例

var fs = require('fs');

var outFile = 'output.txt';

process.stdin.setEncoding('utf8');
process.stdin.on('readable', function(){
    var chunk = process.stdin.read();

    if(chunk !== null){
        fs.writeFile(outFile, chunk, 'utf-8', function(err){
            if(err){
                console.log(err);
            }
            process.exit();
        });
    }
});

答案 2 :(得分:0)

如果您正在从控制台阅读,您可以使用流来处理所有内容:

var fs = require('fs');

var output = fs.createWriteStream('output.txt');

process.stdin.pipe(output);

// this is optional, but good practice...
process.on('SIGINT', function(){
    output.end();
    process.exit();
});

如果您通过HTTP或其他方式从表单获取数据,则需要提供一些示例代码或更多信息。