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!