【发布时间】:2016-07-28 04:11:18
【问题描述】:
我试图简单地从源 (Salesforce) 读取 .tar.gz 文件并将其保存到磁盘。我正在使用 Node (5.6.0) 中的 jsforce 库连接到 Salesforce。当我检索一个 .txt 文件并保存它时——它可以正常工作,没有任何问题。
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 和流处理程序将我的 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 文件。
标签: javascript node.js buffer gzip tar