我正在与另一个团队合作开发一个项目,他们创建了一个我必须使用的类库。在其中一种方法中,他们会收到IFormFile
的列表,但在我的上传端点中,由于性能问题,我使用MultipartReader
进行上传。
我的问题是我很难将FileMultipartSection
转换为IFormFile
。我似乎已经this link但我仍然无法从.ContentType
获取FileMultipartSection
等属性。这是我试图让它工作的代码(reference here):
public async Task<IActionResult> UploadMultipartUsingReader()
{
var boundary = GetBoundary(Request.ContentType);
var reader = new MultipartReader(boundary, Request.Body, 80 * 1024);
var valuesByKey = new Dictionary<string, string>();
MultipartSection section;
var files = new List<FileMultipartSection>();
//var files = new List<IFormFile>();
while ((section = await reader.ReadNextSectionAsync()) != null)
{
var contentDispo = section.GetContentDispositionHeader();
if (contentDispo.IsFileDisposition())
{
var fileSection = section.AsFileSection();
var bufferSize = 32 * 1024;
await HelperFunctions.ReadStream(fileSection.FileStream, bufferSize);
files.Add(fileSection); // HERE I should add a convertion from FileMultipartSection to IFormFile
}
else if (contentDispo.IsFormDisposition())
{
var formSection = section.AsFormDataSection();
var value = await formSection.GetValueAsync();
valuesByKey.Add(formSection.Name, value);
}
}
return Ok();
}
是否可以进行此转换?如果是这样,我该怎么办? 谢谢你的帮助
UPDATE 我也试过这样,似乎失败了。它缺乏属性:
using (var ms = new MemoryStream())
{
await fileSection.FileStream.CopyToAsync(ms);
Microsoft.AspNetCore.Http.Internal.FormFile ifile = new Microsoft.AspNetCore.Http.Internal.FormFile(ms, 0, ms.Length, fileSection.Name, fileSection.FileName);
files.Add(ifile);
}