6

我试图只处理简单的 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);
4

3 回答 3

20
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);
于 2013-07-31T22:50:59.503 回答
5

如果您想使用常规的 urlencoded 正文进行 POST 请求,您不想使用bodyParser(因为您实际上并不想解析正文,您只想将其流式传输到文件系统)。考虑只使用req.pipe(writeableStreamToYourFile).

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

于 2013-07-31T22:12:51.633 回答
4

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

var fs = require('fs');
var writer = fs.createWriteStream('output.txt');
response = {
name: '',
id: ''
}
writer.write(JSON.stringify(response));
于 2017-03-02T03:35:32.813 回答