gpt4 book ai didi

c# - 从 AWS S3 获取对象作为流

转载 作者:太空狗 更新时间:2023-10-29 19:58:02 27 4
gpt4 key购买 nike

我想弄清楚是否可以返回我从 AWS S3 存储桶中获取的对象的某种流(可能是内存流?)。

S3 存储桶包含许多不同类型的图像、文档等。所有这些都应该在我的网站上使用。但是,我不想显示我的 AWS S3 存储桶的路径。
这就是为什么我试图创建一个流并动态显示图像和可下载文档而不是完整路径的原因。这有意义吗? :-)

我正在使用 C#/.NET AWS SDK。

期待听到所指出的任何想法和方向!

public FileStream GetFile(string keyName)
{
using (client = new AmazonS3Client(Amazon.RegionEndpoint.USEast2))
{
GetObjectRequest request = new GetObjectRequest
{
BucketName = bucketName,
Key = keyName
};

using (GetObjectResponse response = client.GetObject(request))
using (Stream responseStream = response.ResponseStream)
using (StreamReader reader = new StreamReader(responseStream))
{
// The following outputs the content of my text file:
Console.WriteLine(reader.ReadToEnd());
// Do some magic to return content as a stream
}
}
}

最佳答案

在 .NET 4 中,您可以使用 Stream.CopyTo将 ResponseStream 的内容(即 Amazon.Runtime.Internal.Util.MD5Stream )复制到 MemoryStream。

GetObjectResponse response = await client.GetObjectAsync(bucketName, keyName);
MemoryStream memoryStream = new MemoryStream();

using (Stream responseStream = response.ResponseStream)
{
responseStream.CopyTo(memoryStream);
}

return memoryStream;

client.GetObjectAsync(bucketName, keyName) 是使用您正在创建的请求调用 GetObject 的替代方法。

关于c# - 从 AWS S3 获取对象作为流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42145696/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com