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

use*_*342 4 post node.js express

我正在尝试处理简单的POST请求并将数据附加到本地文件.但是,当我尝试使用邮递员发布原始文本时,例如"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);
Run Code Online (Sandbox Code Playgroud)

use*_*342 17

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);
Run Code Online (Sandbox Code Playgroud)

  • 现在不推荐使用app.configure,但是如果您注释掉第6行和第9行,则此代码可以正常工作. (2认同)

Pet*_*ons 5

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

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