Senden großer Bilddaten über HTTP in Node.js

In meiner Entwicklungsumgebung habe ich zwei Server. Einer sendet und Bild zum anderen über einPOST http Anfrage.

Der Client-Server führt dies aus:

    fs.readFile(rawFile.path,'binary',function (err, file){
        restler.post("http://0.0.0.0:5000",{
            data: file,
            headers:{
                "Content-Type": rawFile.type,
            }
        }).on('complete',function(data,response){                               
            console.log(data);
            res.send("file went through")
        })

Der Server, der die Anfrage erhält, führt dies aus:

    server.post('/',function(req,res,next){
        fs.writeFileSync("test.png",req.body,"binary",function(err){
            if(err) throw err;
            res.send("OK")
        })
    })

Wenn ich ein kleines Bild sende, funktioniert es einwandfrei. Wenn ich jedoch ein großes Bild sende, obwohl die Datei korrekt gespeichert ist, wird nur der erste obere Teil des Bildes angezeigt. Der Rest ist schwarz. Die Bildgröße ist korrekt.

Ich denke, es ist nur der erste Teil des Bildes, der in die Datei geschrieben wird. Ich habe versucht, einereadStream und einwriteStream aber es scheint nicht zu funktionieren:

req.body.pipe(fs.createWriteStream('test.png'))

Kann ich direkt aus den Binärdaten streamen undpipe es in die Datei? Für das, was ich gesehen habe,readStream wird häufig zum Streamen von Dateien verwendet, die keine rohen Binärdaten sind.

Ich habe ein paar gelesenPosts aber es scheint bei mir nicht zu funktionieren.

Ich benutzerestler Modul im Client-Server undrestify in dem anderen.

Vielen Dank!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage