В моей среде разработки у меня есть два сервера. Один отправляет и изображение другому по запросу 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
в другом.
Спасибо!