Node.js 节点只写入一半的二进制数据

Node.js 节点只写入一半的二进制数据,node.js,express,Node.js,Express,这是我的简单快捷服务: let express = require('express'), fs = require('fs'), path = require('path'); var app = express(); app.set("json spaces", 2); app.use(express.static(__dirname + "/static")); app.use(function(req, res, next) { var data

这是我的简单快捷服务:

let express = require('express'),
    fs      = require('fs'),
    path    = require('path');

var app = express();
app.set("json spaces", 2);
app.use(express.static(__dirname + "/static"));

app.use(function(req, res, next) {
  var data = new Buffer('');
  req.on('data', function(chunk) {
      data = Buffer.concat([data, chunk]);
  });
  req.on('end', function() {
    req.rawBody = data;
    next();
  });
});

app.post("/upload/:filename", function(req, res) {
    let path = "/tmp/" + req.params.filename;
    fs.writeFile(path, req.rawBody, "binary", function(error) {
        res.send({
            message: "sadfasdf"
        });
    });
});

app.listen(3001, function() {
    console.log("Started!");
});
我这样做是为了上传二进制数据:

curl -H "Content-Type: application/octet-stream" -X POST http://localhost:3001/upload/test.tiff -d @/home/vagrant/test.tiff

对于一个大约1100kb的文件,它实际上只会写622kb。有人能告诉我出了什么问题吗?

问题出在我使用curl的方式上。我使用的是
-d
,应该使用
--data binary

为什么在下一行也向同一路径写入数据时将请求流传输到该路径?这是以前版本的复制品。我需要把它拿出来。