public async Task <IActionResult> Create(Film film, IFormFile poster, int page) { ViewBag.Page = page; var userId = HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier); FileSuccess result = null; if (poster != null) { result = await SaveFile(poster, film); } else { film.PosterFileNameOnDisk = @"\Files\empty.jpg"; film.PosterFileNameOriginally = null; } if (result != null && !result.Success) { ModelState.AddModelError("", result.Message); return(View(film)); } if (ModelState.IsValid) { film.OwnerId = _userManager.GetUserId(HttpContext.User); _context.Add(film); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } //ViewData["OwnerId"] = new SelectList(_context.Users, "Id", "Id", film.OwnerId); return(View(film)); }
public async Task <IActionResult> Edit(long id, Film film, IFormFile poster, int page) { ViewBag.Page = page; if (id != film.Id) { return(NotFound()); } var userId = _userManager.GetUserId(HttpContext.User); if (film.OwnerId != userId) { return(StatusCode(403)); } if (ModelState.IsValid) { try { FileSuccess result = null; if (poster != null) { result = await SaveFile(poster, film); } if (result != null && !result.Success) { ModelState.AddModelError("", result.Message); return(View(film)); } _context.Update(film); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!FilmExists(film.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index), new { page = page })); } //ViewData["OwnerId"] = new SelectList(_context.Users, "Id", "Id", film.OwnerId); return(View(film)); }
private async Task <FileSuccess> SaveFile(IFormFile poster, Film film) { FileSuccess result = new FileSuccess(); if (poster != null) { if (poster.Length > 20000000) { result.Message = "файл слишком большой"; result.Success = false; return(result); } if (poster.ContentType.ToLower() != "image/jpg" && poster.ContentType.ToLower() != "image/jpeg" && poster.ContentType.ToLower() != "image/pjpeg" && poster.ContentType.ToLower() != "image/gif" && poster.ContentType.ToLower() != "image/x-png" && poster.ContentType.ToLower() != "image/png") { result.Message = "Неверное расширение файла"; result.Success = false; return(result); } string halfPath = _appEnvironment.WebRootPath + savePath; if (!Directory.Exists(halfPath)) { Directory.CreateDirectory(halfPath); } var fileNameOnDisk = savePath + Guid.NewGuid().ToString() + Path.GetExtension(poster.FileName); var fullPath = _appEnvironment.WebRootPath + fileNameOnDisk; using (FileStream savedFile = new FileStream(fullPath, FileMode.Create)) { await poster.CopyToAsync(savedFile); } film.PosterFileNameOnDisk = fileNameOnDisk; film.PosterFileNameOriginally = poster.FileName; result.Message = ""; result.Success = true; return(result); } result.Message = "файл отсутствует"; result.Success = false; return(result); }