ソース(Salesforce)から.tar.gzファイルを読み込み、ディスクに保存しようとしています。 Salesforceに接続するには、Node(5.6.0)のjsforceライブラリを使用しています。 .txtファイルを取得して保存すると問題なく正常に動作します。Node.jsのバイナリバッファから.tar.gzファイルを作成できません
conn.requestGet('/services/data/v37.0/sobjects/ContentVersion/XXXX/VersionData', {}, function(err, data) {
var bitmap = new Buffer(data, 'binary');
fs.writeFileSync('new_file.txt', bitmap, {
encoding: 'binary'
});
});
ただし、ファイルを.tar.gzとして保存しようとすると問題が発生します。同じfs.writeFileSyncを使用すると、ファイルは保存されますが、正しい形式ではなく、開くことができません。以下のコードでは、tar.gzとstreamifierを使用してバッファをストリームに変換していますが、動作しません。私もストリームバッファを試しましたが、私は同じ問題を抱えています。
conn.requestGet('/services/data/v37.0/sobjects/ContentVersion/XXXX/VersionData', {}, function(err, data) {
var bitmap = new Buffer(data, 'binary');
var read = streamifier.createReadStream(bitmap);
var write = targz().createWriteStream('new_file.tar.gz');
read.pipe(write);
});
私が手にエラーがある:
events.js:154
throw er; // Unhandled 'error' event
^
Error: incorrect header check
at Zlib._handle.onerror (zlib.js:363:17)
私の問題はNode.js: Download file from s3 and unzip it to a stringに似ているようだが、私は.tar.gz形式のファイルを使用しておりますので、そこの提案が助けていないようです。
tarファイルを扱うには、 'archiver'のようなアーカイブライブラリを使う必要があります。 – dnak