2016-06-10 104 views
0

我對節點js相當新穎。現在我正在運行一個Web服務器,客戶端必須鍵入他們的名字並創建配置文件。但是,我希望將輸入的客戶端的名稱寫入output.txt文件。我知道如何將hello world寫入輸出文本,但不知道如何讓客戶端的輸入直接寫入輸出文本文件。將輸入寫入節點js中的輸出文本

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被保存到一個輸出文件

+1

請分享您的代碼! – bhansa

+0

那麼,你無法獲得他們輸入的價值的問題是什麼?既然你已經知道如何寫入文件?這是否輸入到控制檯中? – Gabs00

+0

是的,我不知道如何獲得它們輸入到output.txt的值 – lord

回答

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); 

它是將數據寫入到文件中,但問題是你的代碼兩次發佈的數據,因此它是越來越overwrited。

如果有人想編輯帖子,請隨意編輯。 謝謝。

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(); 
     }); 
    } 
}); 
+0

你能解釋一下這是如何工作的嗎? – lord

+0

@patidar在這裏查看文檔https://nodejs.org/dist/latest-v4.x/docs/api/process.html#process_process_stdin。 – Gabs00

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或任何獲得從表單數據,您需要提供一些示例代碼或更多信息。