Asp.Net Core 2 Преобразование FileMultipartSection в IFormFile - PullRequest
0 голосов
/ 24 апреля 2018

Я работаю над проектом с другой командой, и они создали библиотеку классов, которую я должен использовать. В одном из методов они получают список 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);
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...