在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)
提前谢谢。
答案 0 :(得分:3)
这应该适合你:
var fs = require( 'fs' );
var wstream = fs.createWriteStream( 'myphoto.jpg' );
wstream.write( $binary );
wstream.end();
以下是node.js fs-module的文档: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.jpg'而不是' myphoto.png' ;) 所以解决方案不是这样做的,你只需要重命名文件:
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' ) );