Отправка больших данных изображения по HTTP в Node.js
В моей среде разработки у меня есть два сервера. Один отправляет и изображение другому черезPOST
http запрос.
Клиентский сервер делает это:
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")
})
Сервер, который получает запрос, делает это:
server.post('/',function(req,res,next){
fs.writeFileSync("test.png",req.body,"binary",function(err){
if(err) throw err;
res.send("OK")
})
})
Если я отправляю небольшое изображение, оно работает нормально. Однако, если я отправляю большое изображение, хотя файл сохранен правильно, отображается только первая верхняя часть изображения. Остальное черное. Размер изображения правильный.
Я предполагаю, что это только первый фрагмент изображения, который записывается в файл. Я пытался создатьreadStream
иwriteStream
но это не похоже на работу:
req.body.pipe(fs.createWriteStream('test.png'))
Могу ли я поток непосредственно из двоичных данных иpipe
это в файл? За то, что я видел,readStream
часто используется для потоковой передачи из файлов, а не из двоичных данных.
Я прочитал несколькоПочтас, но это не похоже на работу для меня.
я используюrestler
модуль в клиентском сервере иrestify
в другом.
Спасибо!