我正在尝试处理简单的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);
答案 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));