Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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);
        }