从 S3 AWS 检索到的 OPT 文件已损坏
OPT Files retrieved from S3 AWS are broken
我可以使用 Knox 从 AWS 成功检索我的 OPT 文件..但是当我去使用该文件时它被破坏了。我相信这是一个编码问题..但老实说我不确定。
最终文件大小大于文件实际大小。
下面是一个简化的例子:
var client = knox.createClient({
key: '************',
secret: '************',
bucket: '************'
});
client.get(otfFile).on('response', function(res){
var file = "";
res.setEncoding("binary");
res.on('data', function(chunk){
file += chunk;
});
res.on('end', function() {
// Save File
fs.writeFile( filepath, file, function(err) {
if (err) console.error(err);
});
});
}).end();
您知道如何修复它或知道哪里出了问题吗?
简短的回答——otfs 需要 ISO-8859-1 编码。 :)
问题似乎是 otf 以 ISO-8859-1 编码,但节点不提供使用该格式的默认功能。您可以通过 GET 获取文件,然后使用像 Incov 这样的包对其进行编码。
https://github.com/bnoordhuis/node-iconv
var client = knox.createClient({
key: '************',
secret: '************',
bucket: '************'
});
client.get(otfFile).on('response', function(res){
var file = "";
res.setEncoding("utf8");
res.on('data', function(chunk){
file += chunk;
});
res.on('end', function() {
// Encode
var iconv = new Iconv('UTF-8', 'ISO-8859-1');
file = iconv.convert(file);
// Save File
fs.writeFile( filepath, file, function(err) {
if (err) console.error(err);
});
});
}).end();
我可以使用 Knox 从 AWS 成功检索我的 OPT 文件..但是当我去使用该文件时它被破坏了。我相信这是一个编码问题..但老实说我不确定。
最终文件大小大于文件实际大小。
下面是一个简化的例子:
var client = knox.createClient({
key: '************',
secret: '************',
bucket: '************'
});
client.get(otfFile).on('response', function(res){
var file = "";
res.setEncoding("binary");
res.on('data', function(chunk){
file += chunk;
});
res.on('end', function() {
// Save File
fs.writeFile( filepath, file, function(err) {
if (err) console.error(err);
});
});
}).end();
您知道如何修复它或知道哪里出了问题吗?
简短的回答——otfs 需要 ISO-8859-1 编码。 :)
问题似乎是 otf 以 ISO-8859-1 编码,但节点不提供使用该格式的默认功能。您可以通过 GET 获取文件,然后使用像 Incov 这样的包对其进行编码。 https://github.com/bnoordhuis/node-iconv
var client = knox.createClient({
key: '************',
secret: '************',
bucket: '************'
});
client.get(otfFile).on('response', function(res){
var file = "";
res.setEncoding("utf8");
res.on('data', function(chunk){
file += chunk;
});
res.on('end', function() {
// Encode
var iconv = new Iconv('UTF-8', 'ISO-8859-1');
file = iconv.convert(file);
// Save File
fs.writeFile( filepath, file, function(err) {
if (err) console.error(err);
});
});
}).end();