簡體   English   中英

從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編碼的,但是node沒有提供使用該格式的默認功能。 您可以只通過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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM