C# 通过ASP.net-core2应用程序将流文件从客户端直接上载到s3

C# 通过ASP.net-core2应用程序将流文件从客户端直接上载到s3,c#,asp.net,amazon-s3,streaming,asp.net-core-2.0,C#,Asp.net,Amazon S3,Streaming,Asp.net Core 2.0,背景:用户有一个文件要上传,该文件与一些其他多种形式的文本数据配对。这是张贴到我们的ASP.net核心2应用程序,然后有一些围绕所述文件的成功下载建立的逻辑 我知道我可以生成一个预签名的S3URL供客户端使用,但我们希望避免这种情况 我遇到的问题是无法直接将文件流式传输到S3。我们可以在本地保存该文件,然后将该文件流式传输到S3(成功),但我们希望避免这种情况,因为我们会遇到缩放问题。我们希望尽可能减少数据流到S3的缓存,并且不将任何文件本地保存到光盘以供上传 我试过多种口味的咖啡 Transf

背景:用户有一个文件要上传,该文件与一些其他多种形式的文本数据配对。这是张贴到我们的ASP.net核心2应用程序,然后有一些围绕所述文件的成功下载建立的逻辑

我知道我可以生成一个预签名的S3URL供客户端使用,但我们希望避免这种情况

我遇到的问题是无法直接将文件流式传输到S3。我们可以在本地保存该文件,然后将该文件流式传输到S3(成功),但我们希望避免这种情况,因为我们会遇到缩放问题。我们希望尽可能减少数据流到S3的缓存,并且不将任何文件本地保存到光盘以供上传

我试过多种口味的咖啡

TransferUtility.UploadAsync(stream, ...)  
IAmazonS3.UploadPartAsync(...)  
IAmazonS3.UploadObjectFromStreamAsync(...)  

还有一些我已经记不得的其他方式

这是我在大多数尝试中遇到的一个(如果不是主要的)问题

如何使用提供的HTTP流将所述数据上载到S3

这是我在ResultController中处理文件流的方式:

[HttpPost("myupload")]
public async Task<IActionResult> TestBlobAsync()
{
    result = await this._internMethod(Request);
}

请告诉我是否可以提供任何其他详细信息。

我的解决方案是更改

[HttpPost("myupload")]
public async Task<IActionResult> TestBlobAsync()
{
    result = await this._internMethod(Request);
}
[HttpPost(“myupload”)]
公共异步任务TestBlobAsync()
{
结果=等待此操作。\方法(请求);
}

[HttpPost(“myupload”)]
公共异步任务TestBlobAsync(IFileForm文件)
{
...
}
我现在能够使用
Stream=file.OpenReadStream()
并将其传递给
TransferUtility.UploadAsync(Stream,…)
,成功地解决了手动利用请求对象时出现的内容长度不足问题

[HttpPost("myupload")]
public async Task<IActionResult> TestBlobAsync()
{
    result = await this._internMethod(Request);
}
[HttpPost("myupload")]
public async Task<IActionResult> TestBlobAsync(IFileForm file)
{
    ...
}