.NET Core 2 中与 ReadAsMultipartAsync 等效的方法是什么?

20

我正在将一个 .net 4.5 应用程序重写为 aspnet core 2.0,我有一个方法需要更新,但遇到了一些问题:

    [HttpPut]
    [Route("api/files/{id}")]
    public async Task<Person> Put(int id)
    {
        var filesReadToProvider = await Request.Content.ReadAsMultipartAsync();
        var fileStream = await filesReadToProvider.Contents[0].ReadAsStreamAsync();
        return _personService.UpdatePerson(id, fileStream);
    }

看起来请求不再有Content,而是有body。这很好。但如果现在它是一个MimeMultipart,我该如何读取body呢?

我已经研究了IFormFile,但是我需要在前端做出一些改变吗?

欢迎提供任何对我有帮助的信息 :)

2个回答

12

请查看ASP.NET Core中的文件上传,特别是使用流式传输上传大文件部分。类似这样:

var boundary = MultipartRequestHelper.GetBoundary(
    MediaTypeHeaderValue.Parse(Request.ContentType),
    _defaultFormOptions.MultipartBoundaryLengthLimit);
var reader = new MultipartReader(boundary, HttpContext.Request.Body);

var section = await reader.ReadNextSectionAsync();

2

请问您能否分享一些如何在.NET Core中使用ReadAsMultipartAsync的示例或链接? - user2782405
@user2782405,好的,这是链接 https://github.com/ringcentral/RingCentral.Net/blob/926f8e33a56f78c20223926a7cef7d4c9ada09b7/RingCentral.Net/BatchOperations.cs#L45。这段代码来自支持.NET Core的RingCentral.Net。用法与传统的.NET框架相同。 - Tyler Liu
感谢分享代码!有没有一种简单的方法来检查请求中的MimeMultipart,或者我应该像上面提到的那样使用帮助类?如果您不介意,能否请您分享一个在.NET Core中检查请求中的MimeMultipart的示例? - user2782405

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接