私の開発環境には、2 つのサーバーがあります。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
aと aを作成しようとしましたwriteStream
が、うまくいかないようです:
req.body.pipe(fs.createWriteStream('test.png'))
バイナリ データから直接ストリーミングしpipe
て、ファイルに入れることはできますか? 私が見たものについては、readStream
生のバイナリデータではなくファイルからストリーミングするためによく使用されます。
いくつかの投稿を読みましたが、うまくいかないようです。
restler
クライアントサーバーと他のサーバーでモジュールを使用していますrestify
。
ありがとう!