Почему в MemoryStream CopyToAsync я получаю исключение NullReferenceException?
Мой вопрос отличается от помеченного как дубликат, потому что я знаю, что означает ошибка, просто я понятия не имею, почему я получаю его при использовании IFormFile
а также MemoryStream
согласно документации. Подобных вопросов в SO к моему еще не было и нет.
В моем приложении Core MVC после использования метода CopyToAsync MemoryStream я получаю
NullReferenceException: ссылка на объект не установлена на экземпляр объекта.
Моя модель:
public class Aktualnosci
{
public long ID { get; set; }
public string Tytul { get; set; }
public string Tresc { get; set; }
public DateTime Dzien { get; set; }
public byte[] AktualnosciImage { get; set; }
}
Моя модель представления:
public class AktualnosciCreateVM
{
public long ID { get; set; }
[Required(ErrorMessage = "Proszę wypełnić pole.")]
[StringLength(40, ErrorMessage = "Max 40 znaków.")]
public string Tytul { get; set; }
[Required(ErrorMessage = "Proszę wypełnić pole.")]
public string Tresc { get; set; }
[Required(ErrorMessage = "Proszę wypełnić pole.")]
public DateTime Dzien { get; set; }
public IFormFile AktualnosciImage { set; get; }
}
мой POST
Метод в контроллере:
[Authorize(Roles = "Moderatorzy")]
// POST: Aktualnosci/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(AktualnosciCreateVM aktualnosci)
{
if (ModelState.IsValid)
{
Aktualnosci targetAktualnosci = aktualnosciRepository.AktualnosciList
.FirstOrDefault(m => m.ID == aktualnosci.ID);
using (var memoryStream = new MemoryStream())
{
//here I am getting an error v
await aktualnosci.AktualnosciImage.CopyToAsync(memoryStream);
targetAktualnosci.AktualnosciImage = memoryStream.ToArray();
targetAktualnosci.Dzien = aktualnosci.Dzien;
targetAktualnosci.Tresc = aktualnosci.Tresc;
targetAktualnosci.Tytul = aktualnosci.Tytul;
}
aktualnosciRepository.SaveAktualnosci(targetAktualnosci);
return RedirectToAction(nameof(Index));
}
else
{
return View(aktualnosci);
}
}
я использовал IFormFile
То же, что и >> ДОКУМЕНТАЦИЯ <<;; и >> ПРИМЕР <<;; говорит.
Также я нашел похожий вопрос, но без ответа >> ЗДЕСЬ <<;;
РЕДАКТИРОВАТЬ:
@model AktualnosciCreateVM
@{
ViewBag.Title = "Edycja";
}
@Html.AntiForgeryToken()
<br />
<div class="col-md-6 kontenerStrony">
<div class="tytulStrony col-md-12">Edycja</div>
<div class="space"></div>
<form asp-action="Edit" asp-controller="Aktualnosci" method="post" enctype="multipart/form-data">
<input type="hidden" asp-for="ID" />
<div class="form-group">
<div class="col-md-10">
<label asp-for="AktualnosciImage">Zmień obraz dla tego wpisu:</label>
<input asp-for="AktualnosciImage" type="file" name="files"/>
</div>
</div>
(...)
<div class="text-center">
<button class="btn btn-success" type="submit">Zapisz</button>
<a href="javascript:history.go(-1)" class="btn btn-primary">Powrót</a>
</div>
<div class="space"></div>
</form>
</div>