我有一个这样的数据网址:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...
Run Code Online (Sandbox Code Playgroud)
将这个作为二进制数据(例如,a Buffer)的最简单方法是什么,以便将其写入文件?
在我的开发环境中,我有两台服务器.一个通过POSThttp请求发送和映像到另一个.
客户端服务器这样做:
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")
})
Run Code Online (Sandbox Code Playgroud)
收到请求的服务器执行此操作:
server.post('/',function(req,res,next){
fs.writeFileSync("test.png",req.body,"binary",function(err){
if(err) throw err;
res.send("OK")
})
})
Run Code Online (Sandbox Code Playgroud)
如果我发送一个小图像,它工作正常.但是,如果我发送大图像虽然文件保存正确,但只显示图像的第一个上半部分.其余的都是黑色的.图像大小是正确的.
我想这只是文件中写入的第一块图像.我试过创建一个readStream和一个writeStream但它似乎不起作用:
req.body.pipe(fs.createWriteStream('test.png'))
Run Code Online (Sandbox Code Playgroud)
我可以直接从二进制数据流传输pipe到文件中吗?对于我所看到的,readStream通常用于从文件流而不是原始二进制数据.
我读了几篇文章,但它似乎对我不起作用.
我restler在客户端服务器和restify另一个中使用模块.
谢谢!