Я работаю над проектом с другой командой, и они создали библиотеку классов, которую я должен использовать. В одном из методов они получают список IFormFile
, но в моей конечной точке загрузки из-за проблем с производительностью я выполняю загрузку, используя MultipartReader
.
Моя проблема в том, что я с трудом пытаюсь конвертировать FileMultipartSection
в IFormFile
. Мне уже показалось эта ссылка , но я до сих пор не понимаю, как получить свойства типа .ContentType
из FileMultipartSection
. Вот код, где я пытаюсь заставить его работать ( ссылка здесь ):
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);
}