Amazon S3文件满零

时间:2018-05-21 12:18:34

标签: c# amazon-web-services amazon-s3

我正在使用C#中的官方客户端从AWS S3存储桶下载PDF文件。它似乎下载整个文件,但在8192(0x2000)字节后一切都是0。 见下文(左侧原始文件,右侧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 :(得分:3)

对于遇到此问题的其他人来说,必须在流上重复调用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;
}

感谢John指出这一点。

编辑:

或者查看JohnLBevan亲切指出的这种扩展方法:https://stackoverflow.com/a/24412022/361842