2016-07-08 7 views
0

AWSからKnox ..を使用してOPTファイルを正常に取得できますが、ファイルを使用するときに破損しています。私はこれがエンコードの問題だと信じています。しかし、正直なところ私は分かりません。OPT S3 AWSから取得したファイルが壊れています

最終ファイルのサイズがファイルの実際のサイズより大きくなっています。

以下

は簡単な例です:あなたはそれを修正するか、間違っているものにとアイデアを持ってする方法を

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(); 

知っていますか?

答えて

-1

短い回答 - 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(); 
関連する問題