Файл Amazon S3, полный нулей - PullRequest
0 голосов
/ 21 мая 2018

Я загружаю файл PDF из корзины AWS S3, используя официальный клиент на C #.Кажется, что загружается весь файл, но все равно 0 с после 8192 (0x2000) байтов.Смотрите ниже (оригинальный файл слева, S3 скачать справа):

enter image description here

Любые идеи относительно того, почему это происходит, будут высоко оценены.

Вот код:

var client = new AmazonS3Client(
    new AmazonS3Config
    {
        RegionEndpoint = RegionEndpoint.EUWest1
    });

var transferUtility = new TransferUtility(client);

var request = new TransferUtilityOpenStreamRequest
{
    BucketName = bucketName,
    Key = key
};

using (var stream = transferUtility.OpenStream(request))
{
    var bytes = new byte[stream.Length];

    stream.Read(bytes, 0, (int)stream.Length);

    stream.Close();

    return bytes;
}

Заранее спасибо,

Стив.

1 Ответ

0 голосов
/ 21 мая 2018

Для всех, кто столкнулся с этой проблемой, это был случай, когда нужно было повторно вызывать Read в потоке, пока все байты не были получены:

using (var stream = transferUtility.OpenStream(request))
{
    var position = 0;
    var length = stream.Length;

    var bytes = new byte[length];

    do
    {
        position += stream.Read(bytes, position, (int)(stream.Length - position));
    } while (position < length);

    stream.Close();

    return bytes;
}

Спасибо Джону за указание на это.

Редактировать:

Или проверить этот метод расширения, любезно указанный JohnLBevan: https://stackoverflow.com/a/24412022/361842

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...