2017-05-02 7 views
0

Dies ist mein einfacher Express-Service:Knoten schreiben nur die Hälfte von binären Daten

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!"); 
}); 

ich dies die binären Daten hochladen tun:

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

Für eine Datei, die über 1100kb ist, es wird nur tatsächlich über 622kb schreiben. Kann mir jemand sagen, was schief läuft?

+0

Warum leiten Sie den Anforderungsstream an den Pfad weiter, wenn Sie auch in der nächsten Zeile an denselben Pfad schreiben? – peteb

+0

Das war einige Kopie Pasta aus einer früheren Ausgabe. Ich muss das herausnehmen. –

Antwort

0

Es war die Art, wie ich curl war, dass das Problem war. Ich benutzte -d und sollte stattdessen --data-binary verwenden.

Verwandte Themen