使用POST数据用node.js和express写入本地文件

时间:2013-07-31 21:56:22

标签: node.js post express

我正在尝试处理简单的POST请求并将数据附加到本地文件。但是,当我尝试使用postman发布原始文本时,例如“hi world”,实际附加的是[object Object]。我不确定是什么导致这个,如果什么都不应该被解释为任何一端的对象。谢谢!

var express = require('express'),
    fs = require('fs')
    url = require('url');
var app = express();

app.configure(function(){
  app.use('/public', express.static(__dirname + '/public'));  
  app.use(express.static(__dirname + '/public')); 
  app.use(express.bodyParser());
});

app.post('/receive', function(request, respond) {
    filePath = __dirname + '/public/data.txt';
    fs.appendFile(filePath, request.body, function () {
        respond.end();
    });
});

app.listen(8080);

3 个答案:

答案 0 :(得分:18)

var express = require('express'),
    fs = require('fs')
    url = require('url');
var app = express();

app.use('/public', express.static(__dirname + '/public'));  
app.use(express.static(__dirname + '/public')); 

app.post('/receive', function(request, respond) {
    var body = '';
    filePath = __dirname + '/public/data.txt';
    request.on('data', function(data) {
        body += data;
    });

    request.on('end', function (){
        fs.appendFile(filePath, body, function() {
            respond.end();
        });
    });
});

app.listen(8080);

答案 1 :(得分:4)

如果你想用普通的urlencoded主体做POST请求,你不想使用bodyParser(因为你实际上并不想解析身体,你只想要流式传输它到文件系统)。考虑只使用req.pipe(writeableStreamToYourFile)流式传输数据块。

如果你想进行文件上传,可以使用bodyParser,但它会处理多个文件并将它们写入磁盘,你需要遍历req.files并从中复制它们目标文件的临时目录。

答案 2 :(得分:2)

如果你想存储Json数据,那么文件应该是** .Json类型。否则尝试将其转换为字符串并写入*​​ .txt文件。喜欢

var fs = require('fs');
var writer = fs.createWriteStream('output.txt');
response = {
name: '',
id: ''
}
writer.write(JSON.stringify(response));