c# - 从 AWS S3 .NET Core 3.1 WEB API 下载文件
问题描述
我正在尝试使用 AWS SDK 从 AWS S3 存储桶中获取对象。
using(GetObjectResponse response = await client.GetObjectAsync(request))
using (Stream responseStream = response.ResponseStream)
using (StreamReader reader = new StreamReader(responseStream))
{
string contentType = response.Headers["Content-Type"];
responseBody = reader.ReadToEnd();
AWSFile file = new AWSFile();
file.ContentType = contentType;
file.FileContent = responseBody
return file;
}
如何处理响应正文以从控制器返回文件?
控制器
public async Task<object> DownloadAttachment(string filename)
{
try
{
var request = await _requestService.DownloadAttachmentAsync(filename);
return File(request.FileContent,request.ContentType, "Vue Cheat Sheet.pdf");
}
catch (Exception ex)
{
return StatusCode(500, ex.Message);
}
}
尝试了很多事情但无法成功
解决方案
需要 AWSSDK.S3 nuget 包。
public class DownloadFileController: ControllerBase
{
IAmazonS3 S3Client {get;set;}
string BucketName ="**your bucket name**";
public DownloadFileController(IAmazonS3 S3Client)
{
this.S3Client = S3Client;
}
public async Task DownloadFileAsync(string filename,string downloadfile)
{
TransferUtility transferUtility = new TransferUtility(S3Client);
await transferUtility.DownloadAsync(downloadfile,BucketName,filename);
}
}
文件名:- {任何目录}/{名称}.{txt | json | *}
下载文件:- {name}.{txt | json |*}
{} 用作占位符,放置您需要的文件名和扩展名。
推荐阅读
- javascript - D3.js 在“on”事件中丢失对象引用
- android - PID:12181 java.util.ConcurrentModificationException
- javascript - 如何将数据从数组复制到顶点热图图表?
- javascript - iframe 内容的高度随着每次 iframe 调整大小以适应内容而增长
- qt - 使用 qt 显示带有 alpha 通道的视频
- c# - 应用程序不会无限期地监听数据库连接?
- powerbi - 我可以将具有 1 个值的表转换为 Power BI 中的文本格式吗?
- html - Css 网格登陆页面
- twitter - 挑选 Flink/Kafka 应用程序的延迟图
- c++ - 使用 OpenVINO 上的 c++ API 获取模型每一层的参数/权重