В течение нескольких часов я пытался написать код, который позволял бы загружать фотографии в базу данных, но либо ничего не добавляется в базу данных, либо это вызывает ошибку:
[имя файла] значение недействительно
Мой Restauracja.cs файл:
[Required(ErrorMessage = "Wybierz plik")]
[MaxLength(30, ErrorMessage = "vxvxcvcxvxxx")]
[Display(Name = "Zdjecia")]
public string LinkZdjecia { get; set; }
[Display(Name = "Zdjecia")]
public byte[] Photo { get; set; }
Контроллер RestauracjaController.cs :
public class RestauracjaController : Controller
{
private readonly FirmaContext _context;
public RestauracjaController(FirmaContext context)
{
_context = context;
}
public async Task<IActionResult> Create(Restauracja restauracja, List<IFormFile> Photo)
{
foreach (var item in Photo)
{
if (item.Length > 0)
{
using (var stream = new MemoryStream())
{
await item.CopyToAsync(stream);
restauracja.Photo = stream.ToArray();
}
}
}
return View(restauracja);
}
}
Просмотр Create.cs :
<form asp-action="Create">
<div class="form-group">
<label asp-for="LinkZdjecia" class="control-label"></label>
<input asp-for="LinkZdjecia" class="form-control" />
<span asp-validation-for="LinkZdjecia" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Photo" class="control-label"></label>
<input name="Image" id="Imageinput" class="form-control" type="file" />
<span asp-validation-for="Photo" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
В этом случае я получил ошибку:
Недопустимое значение [имя файла]
Во втором случае в базу данных сохраняется null
(на фото). Контроллер RestauracjaController.cs :
public async Task<IActionResult> Create(Restauracja restauracja, IFormFile Image)
{
if (ModelState.IsValid)
{
using (var ms = new MemoryStream())
{
Image.CopyTo(ms);
restauracja.Photo = ms.ToArray();
}
_context.Add(restauracja);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(restauracja);
}