소스 (Salesforce)에서 .tar.gz 파일을 읽고 디스크에 저장하려고합니다. Salesforce에 연결하기 위해 노드 (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