我正在使用C#中的官方客户端从AWS S3存储桶下载PDF文件。它似乎下载整个文件,但在8192(0x2000)字节后一切都是0。 见下文(左侧原始文件,右侧S3下载):
对于为什么会发生这种情况的任何想法都将非常感激。
以下是代码:
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;
}
提前致谢,
史蒂夫。
答案 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