2016-07-08 3 views
0

Я могу успешно извлечь мой OPT-файл из AWS с помощью Knox .. но когда я иду использовать файл, он сломан. Я считаю, что это проблема кодирования. Но, честно говоря, я не уверен.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(); 
Смежные вопросы