我已将图片上传到Amazon Web Service S3。我正在使用client.GetObject
从S3读取图像。
我正在将图像转换为一系列字节。为了做到这一点,我正在使用byte[]
创建一个缓冲区(Stream.read
)来保存数据。
为了做到这一点,我需要为缓冲区数组分配适当的字节数。
我的问题是:如何在将图像读取到S3Response object
之后获取图像的大小。我知道我可以运行responseObject.ResponseStream来获取流,但是我如何获得图像的大小流?
使用AWS SDK .NET C#进行开发
答案 0 :(得分:1)
AWS Sdk中的TransferUtility有一个更好的优化解决方案,用于在s3之间传输文件。为:
using (var fileTransferUtility = new TransferUtility(client))
{
var request = new TransferUtilityDownloadRequest();
request.BucketName = BucketName;
request.FilePath = desination;
request.Key = key;
fileTransferUtility.Download(request);
}
答案 1 :(得分:0)
您可以使用ResponseStream.Length
属性,该属性以字节为单位给出对象的长度。
答案 2 :(得分:0)
ResponseStream.Length会抛出异常,因为它是一个网络流(“不支持搜索”)。
在请求流本身之前,请通过目录列表获取其信息:
var request = new ListObjectsV2Request
{
BucketName = bucketName,
Prefix = $"{folderName}/{fileName}"
};
var response = Client.ListObjectsV2(request);
var fileSize = response.S3Objects.Any() ? response.S3Objects.First().Size : 0;