我对节点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的任何用户类型都保存到输出文件
答案 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或其他方式从表单获取数据,则需要提供一些示例代码或更多信息。