用nodejs在一个文件上写http请求

我怎样才能保存一个文件的HTTP请求? 我使用nodejs作为服务器。 我通过ajax发送数据,如下所示

user_info = { system_info: [ {'browesr': browser}, {'brower-version': version}, {'cookies': cookieEnabled}, {'os': os}, {'os-version': osVersion} ] } } $.ajax({ url: 'http://127.0.0.1:4560', data: {"info" : JSON.stringify(user_info)}, type: 'POST', jsonCallback: 'callback', success: function(data) { var ret = jQuery.parseJSON(data); $('#lblResponse').html(ret.msg); console.log('success'); }, error: function(xhr, status, error) { console.log('Error:' + error.message); $('#lblResponse').html('Error connecting to the server.'); } }); 

post方法正常工作,在服务器端数据也接收。 我的问题是如何保存数据! 我search了一下stream媒体。 这是我的nodejs服务器代码。

 var http = require('http'); var fs = require('fs'); http.createServer(function (req, res) { console.log('Request Received'); res.writeHead(200, { 'Context-Type': 'text/plain', 'Access-Control-Allow-Origin': '*' }); req.on('data', function (chunk) { var rstream = fs.createReadStream(JSON.parse(chund)); var wstream = fs.createWriteStream('info.txt'); rstream.pipe(wstream); str += chunk; console.log('GOT DATA'); }); res.end('{"msg": "OK"}'); }).listen(4560, '127.0.0.1'); console.log('Server running at http://127.0.0.1:4560/'); 

我使用FS模块和stream媒体,但根本没有工作,“info.txt”是在同一目录中的服务器代码附近。

有谁能够帮助我?

你大部分是在那里。 这是一个基于你的代码的工作示例:

 var http = require('http'); var fs = require('fs'); http.createServer(function (req, res) { console.log('Request Received'); var body = ''; res.writeHead(200, { 'Context-Type': 'text/plain', 'Access-Control-Allow-Origin': '*' }); req.on('data', function (chunk) { body += chunk; }); req.on('end', function() { fs.writeFile('file.json', body, 'utf8'); res.end('{"msg": "OK"}'); }) }).listen(4560, '127.0.0.1'); console.log('Server running at http://127.0.0.1:4560/'); 

这将保存您发送到名为“file.json”的文件的内容。

您还需要对Ajax请求进行一些小的更改:

 url: 'http://127.0.0.1:4560', data: JSON.stringify({"info" : user_info}), contentType: "application/json", type: 'POST', jsonCallback: 'callback', 

如果你想修改你正在写的文件,那么你可以这样:

 req.on('end', function() { var parsedJson = JSON.parse(body); fs.writeFile('file.json', JSON.stringify(parsedJson.info), 'utf8'); res.end('{"msg": "OK"}'); }) 

如果你想追加文件,而不是覆盖它,那么你可以做一些事情:

 req.on('end', function() { var parsedJson = JSON.parse(body); // Read and parse the JSON file var file = require('file.json'); file[parsedJson.someKindOfID] = parsedJson; fs.writeFile('file.json', JSON.stringify(file), 'utf8'); res.end('{"msg": "OK"}'); }) 

但是这取决于你的文件中的数据结构。