Я хотел бы иметь возможность загружать изображения и сохранять их в определенной папке.
Каждый раз, когда я пытаюсь, я получаю эту ошибку:
"InvalidOperationException: не найден подходящий конструктор для типа объекта« FormFile ». Следующие параметры не могут быть связаны со свойствами объекта:« baseStream »,« baseStreamOffset »,« length »,« name »,« fileName ». «
И я не знаю, как это исправить.
Seminarie.cs
[Required]
[DataType(DataType.Upload)]
[FileExtensions(Extensions = "jpg,png,jpeg,bmp")]
public FormFile Foto { get; set; }
seminarieViewModel.cs
[Display (Name = "Kies een foto")]
[DataType (DataType.Upload)]
public FormFile Foto { get; set; }
public SeminarieViewModel(Seminarie seminarie)
{
DatumDoorgaat = seminarie.DatumDoorgaat;
Onderwerp = seminarie.Onderwerp;
Beschrijving = seminarie.Beschrijving;
PlaatsenBeschikbaar = seminarie.PlaatsenBeschikbaar;
Spreker = seminarie.Spreker;
Locatie = seminarie.Locatie;
Foto = seminarie.Foto;
PrijsLeden = seminarie.PrijsLeden;
PrijsNietLeden = seminarie.PrijsNietLeden;
BeginUur = seminarie.BeginUur;
EindUur = seminarie.EindUur;
PrijsInschrijvingsAttest = seminarie.PrijsInschrijvingsAttest;
}
SeminarieController.cs
public IActionResult WijzigSeminarie(int id)
{
Seminarie seminarie = _seminarieRepository.GetById(id);
if (seminarie == null)
return NotFound();
ViewData["IsEdit"] = true;
ViewData["Seminaries"] = GetSeminarieSelectList();
return View(new SeminarieViewModel(seminarie));
}
SeminarieController.cs
[HttpPost]
public IActionResult WijzigSeminarie(int id, SeminarieViewModel seminarieViewModel)
{
try
{
Seminarie seminarie = _seminarieRepository.GetById(id);
FormFile file = seminarieViewModel.Foto;
if (file == null)
{
seminarie.EditSeminarie(seminarieViewModel.DatumDoorgaat, seminarieViewModel.Onderwerp, seminarieViewModel.Beschrijving, seminarieViewModel.PlaatsenBeschikbaar,
new Spreker(seminarie.Spreker.Voornaam, seminarie.Spreker.Achternaam, seminarie.Spreker.Email, seminarie.Spreker.Foto, seminarie.Spreker.Beschrijving),
new Locatie(seminarieViewModel.Locatie.Straat, seminarieViewModel.Locatie.Huisnummer, seminarieViewModel.Locatie.Gemeente, seminarieViewModel.Locatie.Postcode,
seminarieViewModel.Locatie.Land), seminarieViewModel.PrijsLeden, seminarieViewModel.PrijsNietLeden, seminarieViewModel.BeginUur, seminarieViewModel.EindUur,
seminarieViewModel.PrijsInschrijvingsAttest);
}
else
{
FileInfo fileInfo = new FileInfo(file.FileName);
string ex = fileInfo.Extension;
string fileNaam = seminarieViewModel.Onderwerp.Replace(" ", "");
var FilePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/seminarieFiles/", fileNaam + ex);
if (System.IO.File.Exists(FilePath))
System.IO.File.Delete(FilePath);
fileNaam += ex;
var path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/seminarieFiles/", fileNaam);
using (var stream = new FileStream(path, FileMode.Create))
{
file.CopyTo(stream);
}
//SeminarieViewModel SModel = new SeminarieViewModel(seminarie, fileNaam);
seminarie.EditSeminarie(seminarieViewModel.DatumDoorgaat, seminarieViewModel.Onderwerp, seminarieViewModel.Beschrijving, seminarieViewModel.PlaatsenBeschikbaar,
new Spreker(seminarie.Spreker.Voornaam, seminarie.Spreker.Achternaam, seminarie.Spreker.Email, seminarie.Spreker.Foto, seminarie.Spreker.Beschrijving),
new Locatie(seminarieViewModel.Locatie.Straat, seminarieViewModel.Locatie.Huisnummer, seminarieViewModel.Locatie.Gemeente, seminarieViewModel.Locatie.Postcode,
seminarieViewModel.Locatie.Land), seminarieViewModel.Foto, seminarieViewModel.PrijsLeden, seminarieViewModel.PrijsNietLeden, seminarieViewModel.BeginUur, seminarieViewModel.EindUur,
seminarieViewModel.PrijsInschrijvingsAttest);
}
_seminarieRepository.SaveChanges();
TempData["message"] = $"U heeft seminarie {seminarie.Onderwerp} succesvol gewijzigd.";
}
catch
{
TempData["error"] = "Sorry, er is een probleem opgetreden, de seminarie was niet gewijzigd...";
}
return RedirectToAction(nameof(AdminSeminarie));
}
WijzigSeminarie.cshtml
<div class="form-group">
<label asp-for="Foto">Foto over het seminarie</label>
<input asp-for="Foto" class="form-control" />
<span asp-validation-for="Locatie.Land" class="text-danger"></span>
</div>