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
}
}
}
}
}