2013-09-09 3 views
0

У меня возникла серьезная проблема с чтением данных объекта с Amazon S3. Мой код для чтения определенного диапазона байтов следующий.AWS S3 GetObjectResponse.ResponseStream длина отличается от запрошенной

Если вы проверяете response.contentLength вы обнаружите, что он имеет правильное значение, то есть конец - начало. Однако длина потока ответа меньше, чем я спросил и что он говорит в ContentLength. Я не получу все данные, которые я попросил, и я понятия не имею, почему и какая часть обрезана.

   GetObjectRequest request = new GetObjectRequest() 
       { 
        BucketName = m_BucketName, 
        Key = m_FileName, 
        ByteRangeLong = new Amazon.S3.Model.Tuple<long, long>(start, end) 
       }; 
       GetObjectResponse response = m_AwsClient.GetObject(request); 
       using (Stream responseStream = response.ResponseStream) 
       { 
        using (StreamReader reader = 
         new StreamReader(responseStream)) 
        { 
         strResponse = reader.ReadToEnd(); 
        } 
       } 

ответ

0

Это проблема с кодировкой. Класс StreamReader по умолчанию использует кодировку UTF-8, которая игнорирует любые символы, которые он не может понять. Если я установлю кодировку по умолчанию в конструкторе StreamReader, она будет решена.