【发布时间】:2013-02-06 18:01:40
【问题描述】:
在我的开发环境中,我有两台服务器。一个通过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 通常用于从文件而不是原始二进制数据中流式传输。
我读了几篇posts,但似乎对我不起作用。
我在客户端服务器中使用restler 模块,在另一个服务器中使用restify。
谢谢!
【问题讨论】: