IFormFile 'System.InvalidOperationException' - PullRequest
       87

IFormFile 'System.InvalidOperationException'

0 голосов
/ 09 октября 2018

Атрибут non-public.member _baseStream в IFormFile в моем приложении ASP.NET Core выдает следующее исключение после загрузки файла:

ReadTimeout =   ((Microsoft.AspNetCore.Http.Internal.FormFile)BildUpload)._baseStream.ReadTimeout' threw an exception of type 'System.InvalidOperationException'

Я пытаюсь загрузить файл, используя страницу бритвысо следующим кодом:

<form method="post" enctype="multipart/form-data">
    <div class="form-group">
        <input type="file" name="BildUpload"  />
    </div>
    <input type="submit" value="Upload" class="btn btn-default" />
</form>

В классе codebehind я получил только объявление, и больше ничего не читал и не записывал параметр, кроме страницы бритвы:

    public IFormFile BildUpload { get; set; }

Спасибо за вашу помощь!

Моя последняя цель - проанализировать файл в байтовом массиве и сохранить в базе данных следующим образом: Как преобразовать файл в байтовый массив напрямую без его пути (без сохранения файла) Но там я получаю исключение nullpointer.

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

В случае, если кто-то сталкивается с подобным поведением.Вот мое решение для загрузки изображения и его преобразования в байтовый массив (для хранения его в базе данных Microsoft SQL):

Прежде всего используйте код xaml и свойство IFormFile из вопроса.В приведенном ниже коде добавьте этот код для обработки данных формы в байтовый массив:

public async Task<IActionResult> OnPostAsync(string id)
{
    //get the "Kontakt" entity
    if (!await SetKontaktAsync(id))
    {
          return NotFound();
    }

    //convert form data to byte array and assign it to the entity
    if (BildUpload.Length > 0)
    {
          using (var ms = new MemoryStream())
          {
                BildUpload.CopyTo(ms);
                Kontakt.Bild = ms.ToArray();
          }
    }

    //save changes to the database
    _context.Attach(Kontakt).State = EntityState.Modified;
    await _context.SaveChangesAsync();

    //reload page
    return await OnGetAsync(Kontakt.GID);
}

Каркасы: ASP.NET Core 2.2, Entity Framework Core 2.2

0 голосов
/ 09 октября 2018

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

...