ObjectDisposedException при попытке получить размер файла в MultipartFormDataStreamProvider

Я пытаюсь загрузить файл (изображение или pdf-файл) и некоторые связанные данные, используя Web API . Я задал вопрос раньше здесь.

Я решил использовать MultipartFormDataStreamProvider и переопределить методы, которые я хочу. Я мог бы правильно переименовать файл, но я хочу проверить размер перед сохранением файла. но, как вы можете видеть на картинке, которую я прикрепил, я получаю ошибку ObjectDisposeException, когда пытаюсь прочитать длину заголовка. как я могу прочитать размер файла?

Я попытался описанным ниже способом, но все еще имею такую ​​же проблему (пытается получить доступ к закрытому файлу)

 await Request.Content.ReadAsMultipartAsync(provider);
    foreach (var content in provider.Contents)
     {
       using (content)
         {
           if (content.Headers.ContentDisposition.FileName != null)
              {
                var existingFileName = content.Headers.ContentDisposition.FileName.Replace("\"", string.Empty);
                using (var st = await content.ReadAsStreamAsync())
                {
                   var ext = Path.GetExtension(existingFileName.Replace("\"", string.Empty));
                   List<string> validExtensions = new List<string>() { ".pdf", ".jpg", ".jpeg", ".png" };
                   if (st.Length > 1024 && validExtensions.Contains(ext, StringComparer.OrdinalIgnoreCase))
                      {
                       var fullPath = "http://localhost:55946/api/ClientPortal/Documents";
                       using (var fs =
                           new FileStream(Path.Combine(fullPath, existingFileName + "1" + ext),FileMode.Create))
                          {
                           await st.CopyToAsync(fs);
                          }
                       }
                  else
                       {
                           //do something
                       }
               }
             }
        }
   }

0 ответов