OPT Файлы, полученные с S3 AWS, не работают

Я могу успешно извлечь свой OPT-файл из AWS с помощью Knox... но когда я использую этот файл, он не работает. Я считаю, что это проблема кодирования.. но, честно говоря, я не уверен.

Конечный размер файла больше, чем фактический размер файла.

Ниже приведен упрощенный пример:

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();
Другие вопросы по тегам