2015-05-04 67 views
0

在PHP中,我们可以利用这个写二进制字符串转换为图像文件

$binary = hex2bin($hex); 
file_put_contents("myphoto.png", $binary); 

它使用file_put_contents,以便将其写入到磁盘上的二进制字符串写入到一个映像文件:在

node.js我们如何才能实现这个像file_put_contents。 ?

编辑: 我想这所作的评论的建议,但它给我一个错误

var binarydata = fs.readFileSync('mybin.txt',{flag:'w'}); 

     fs.writeFileSync('myphoto.png', binarydata); 


Error: EPERM, operation not permitted 
    at Error (native) 
    at Object.fs.readSync (fs.js:552:19) 
    at Object.fs.readFileSync (fs.js:389:28) 

预先感谢您。

+1

阅读[fs'(文件系统)模块的文档](https://nodejs.org/api/fs.html#fs_file_system)将是一个很好的开始。 –

+0

类似'fs.writeFileSync()',并确保你写的是一个'缓冲'型 – Catalyst

+0

@Catalyst,你能告诉我一些片段请 – jemz

回答

2

这应该为你工作:

var fs = require('fs'); 
var wstream = fs.createWriteStream('myphoto.jpg'); 
wstream.write($binary); 
wstream.end(); 

这里是node.js的FS-模块的文档:https://nodejs.org/api/fs.html

如果你想要做的事,当它已经完成使用

fs.writeFileSync('myphoto.png', $binary); 

或做它异步:

var fs = require('fs'); 
var wstream = fs.createWriteStream('myphoto.jpg'); 
wstream.on('finish', function() { 
    // do something 
}); 
wstream.write($binary); 
wstream.end(); 

读取文件,并写入到另一个文件:

var fs = require('fs'); 
fs.readFile('temp.txt', function(err, data) { 
    if (err) throw err; 

    var wstream = fs.createWriteStream('myphoto.jpg'); 
    wstream.on('finish', function() { 
     // do something 
    }); 
    wstream.write(data); 
    wstream.end(); 
}); 

编辑:我的代码是工作所有的时间,它只是是不是“myphoto.png” myphoto.jpg';) 所以解决的办法是不要做这样的,你只需要重命名文件:

var fs = require('fs'); 
fs.renameSync('temp.txt', 'myphoto.jpg'); 

,或者如果你需要你的TEMP.TXT,然后将其复制这样的:

var fs = require('fs'); 
fs.createReadStream('temp.txt').pipe(fs.createWriteStream('myphoto.jpg')); 
+0

我的二进制数据存储在一个文件temp.txt,我怎么能先得到它? – jemz

+1

请阅读文档... fs.readFileSync('temp.txt');我也会编辑我的帖子以添加异步codesnippet到我的帖子,那么你应该知道你需要的全部 – RafaelKr

+0

错误:EPERM,操作不允许 – jemz