2016-07-08 11 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();