我試圖簡單地從源文件(Salesforce)讀取.tar.gz文件並將其保存到磁盤。我正在使用Node(5.6.0)中的jsforce庫連接到Salesforce。當我檢索一個.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將我的Buffer轉換爲Stream,但它不起作用。我也嘗試了流緩衝區,但是我遇到了同樣的問題。
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文件,然後還有的建議似乎沒有幫助。
您將需要使用像archiver一樣的歸檔庫來處理tar文件。 – dnak