示例#1
0
        public IActionResult OnPost(int id)
        {
            if (FileUpload != null)
            {
                var filePath = Path.Combine("./wwwroot/images/", FileUpload.FileName);
                using (var stream = System.IO.File.Create(filePath)) {
                    FileUpload.CopyTo(stream);
                }
            }

            using (var db = new LiteDatabase(@"movieReservation.db")) {
                var movieCollection = db.GetCollection <Models.Movie>("Movies");
                var movie           = movieCollection.FindById(id);

                movie.Title       = Movie.Title;
                movie.Genre       = Movie.Genre;
                movie.Price       = Movie.Price;
                movie.Description = Movie.Description;

                if (FileUpload != null)
                {
                    movie.Image = FileUpload.FileName;
                }

                movieCollection.Update(movie);
            }

            return(RedirectToPage("/Movies/Index"));
        }
示例#2
0
        public IActionResult OnPost()
        {
            var filePath = Path.Combine("./wwwroot/images/", FileUpload.FileName);

            using (var stream = System.IO.File.Create(filePath)) {
                FileUpload.CopyTo(stream);
            }

            using (var db = new LiteDatabase(@"movieReservation.db")) {
                var movieCollection = db.GetCollection <Models.Movie>("Movies");

                movieCollection.Insert(new Models.Movie {
                    Title       = Movie.Title,
                    Genre       = Movie.Genre,
                    Price       = Movie.Price,
                    Description = Movie.Description,
                    Image       = FileUpload.FileName,
                });
            }
            return(RedirectToPage("/Movies/Index"));
        }
示例#3
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                GenreChoices = _context.Genre.Select(s => new SelectListItem
                {
                    Value = s.GenreID.ToString(),
                    Text  = s.Name
                }).ToList();
                return(Page());
            }

            if (FileUpload == null)
            {
                ModelState.AddModelError("Validation.FileUpload.FileIsBlank", "Please choose a file to upload");
                GenreChoices = _context.Genre.Select(s => new SelectListItem
                {
                    Value = s.GenreID.ToString(),
                    Text  = s.Name
                }).ToList();
                return(Page());
            }

            //Validate the Genres
            foreach (var genre in Genres)
            {
                if (!await _context.Genre.AnyAsync(a => a.GenreID.ToString() == genre))
                {
                    ModelState.AddModelError("Validation.Genre.IsInvalid", "An unknown Genre was provided");
                }
            }

            var showpieceID = Guid.NewGuid();
            var fileName    = showpieceID.ToString() + ".png";

            Showpiece.Slug = mtgdm.Helpers.Slugify.ToUrlSlug(Showpiece.Title);
            if (await _context.Showpiece.AnyAsync(a => a.Slug.Equals(Showpiece.Slug, StringComparison.OrdinalIgnoreCase) && a.ShowpieceID != Showpiece.ShowpieceID))
            {
                ModelState.AddModelError("Validation.Title.IsUsed", $"The title '{Showpiece.Title}' has already been taken");
                return(Page());
            }

            try
            {
                using var input = new MemoryStream();
                FileUpload.CopyTo(input);
                input.Position = 0;

                var bucket = _config["AWS.S3.Bucket.Content"];
                var region = _config["AWS.S3.Region"];

                Tinify.Key = _config["Tinify.APIKey"];

                var source = Tinify.FromBuffer(input.ToArray());

                //Headers aren't passing to cloudfront: https://github.com/cagataygurturk/image-resizer-service/issues/7
                var head = new Dictionary <string, string>()
                {
                    { "Cache-Control", "max-age=31536000" }
                };

                await source.Store(new
                {
                    service               = "s3",
                    aws_access_key_id     = _config["AWS.S3.AccessKeyId"],
                    aws_secret_access_key = _config["AWS.S3.SecretKey"],
                    region  = region,
                    path    = bucket + fileName,
                    headers = head
                });
            }
            catch (AccountException e)
            {
                // Verify your API key and account limit.
                ModelState.AddModelError("", e.Message);
                return(Page());
            }
            catch (ClientException e)
            {
                switch (e.Status)
                {
                case 415:
                    ModelState.AddModelError("", "File type is not supported");
                    return(Page());

                default:
                    ModelState.AddModelError("", e.Message);
                    return(Page());
                }
            }
            catch (ServerException e)
            {
                // Temporary issue with the Tinify API.
                ModelState.AddModelError("", e.Message);
                return(Page());
            }
            catch (ConnectionException e)
            {
                // A network connection error occurred.
                ModelState.AddModelError("", e.Message);
                return(Page());
            }
            catch (System.Exception e)
            {
                // Something else went wrong, unrelated to the Tinify API.
                ModelState.AddModelError("", e.Message);
                return(Page());
            }

            if (Showpiece.Synopsis == null)
            {
                Showpiece.Synopsis = "";
            }
            Showpiece.ShowpieceID = showpieceID;
            Showpiece.Created     = DateTime.Now;
            Showpiece.Published   = true;
            Showpiece.URL         = String.Concat(_config["AWS.CloudFront.URL.Resize"], "content/", fileName);
            Showpiece.UserID      = Guid.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);

            var genres = Genres.Select(s => new ShowpieceToGenre()
            {
                ShowpieceToGenreID = Guid.NewGuid(),
                ShowpieceID        = showpieceID,
                GenreID            = Guid.Parse(s)
            });

            await _context.ShowpieceToGenre.AddRangeAsync(genres);

            await _context.Showpiece.AddAsync(Showpiece);

            await _context.SaveChangesAsync();

            return(new RedirectToPageResult("/Showpiece/View", new { name = Showpiece.Slug }));
        }
示例#4
0
        // To protect from overposting attacks, enable the specific properties you want to bind to, for
        // more details, see https://aka.ms/RazorPagesCRUD.
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                ModelState.AddModelError("", "One or More Fields is invalid");
                return(Page());
            }

            var ModelId   = Cars.CarsModelId;
            var ModelName = _context.CarsModel.FindAsync(ModelId).Result;

            if (ModelName == null)
            {
                return(NotFound());
            }

            if (FileUpload != null)
            {
                UploadFolder = "upload";
                WebRoot      = _hostingEnvironment.WebRootPath;
                UploadDir    = System.IO.Path.Combine(WebRoot, UploadFolder);


                if (!Directory.Exists(UploadDir))
                {
                    Directory.CreateDirectory(UploadDir);
                }
                //long size = FileUpload.Sum(f => f.Length);

                //Home file upload


                NewString     = CreateRandomString();
                NewFileString = CreateRandomString();
                FileName      = ContentDispositionHeaderValue.Parse(FileUpload.ContentDisposition).FileName.Trim('"');
                Directory.CreateDirectory(UploadDir + "/" + NewString);
                DynamicImageFolder = System.IO.Path.Combine(UploadDir, NewString);
                //var ImageFolder = UploadDir + "/" + NewString;
                // store final final filename
                string FullPath = Path.Combine(DynamicImageFolder, FileName);     // create dynamic string for unique folder
                FileType        = System.IO.Path.GetExtension(FileName);
                FileNameRenamed = NewFileString + FileType;
                if (FileUpload.Length > 0)
                {
                    using (var stream = new FileStream(FullPath, FileMode.Create))
                    {
                        FileUpload.CopyTo(stream);
                        ResizeToFixedSize(FullPath, FileName);                               //crop the uploaded file and rename it
                        System.IO.FileInfo fi = new System.IO.FileInfo(FullPath + FileName); // access the cropped image directory
                        fi.MoveTo(UploadDir + "/" + NewString + "/" + NewFileString + FileType);
                        //fi.Delete(FullPath+FileName);
                    }
                }
            }

            if (MultipleFileUpload.Count > 0 && MultipleFileUpload != null)
            {
                NewThumbString = CreateRandomString();
                Directory.CreateDirectory(UploadDir + "/" + NewThumbString + "/" + "thumbs");
                // save Car data to DB
                Cars.ModelName       = ModelName.Name; // Map Cars ModelName Object to CarsModel Name Object
                Cars.Year            = ModelName.Year;
                Cars.UploadedDate    = DateTime.Now;
                Cars.DisplayFileName = FileNameRenamed;
                Cars.FolderName      = NewString;
                Cars.ThumbFolderName = NewThumbString;
                Cars.ArrayFileName   = "ArrFileName";

                // _context.Database.ExecuteSqlRawAsync("SET IDENTITY_INSERT [dbo].[CarImages] ON");
                _context.Add(Cars);
                await _context.SaveChangesAsync();

                //retrieve last inserted record;

                int counter = 0;
                foreach (IFormFile ModelFile in MultipleFileUpload)    //Home file upload
                {
                    ArrFileName      = ContentDispositionHeaderValue.Parse(ModelFile.ContentDisposition).FileName.Trim('"');
                    ThumbImageFolder = System.IO.Path.Combine(UploadDir, NewThumbString, "thumbs");
                    ArrFileName      = GetUniqueFileName(ArrFileName);
                    string FullPath = Path.Combine(ThumbImageFolder, ArrFileName);     // create dynamic string for unique folder
                                                                                       //FileType = System.IO.Path.GetExtension(FileName);
                    if (MultipleFileUpload.Count > 0)
                    {
                        using (var transaction = _context.Database.BeginTransaction())
                        {
                            using (var stream = new FileStream(FullPath, FileMode.Create))
                            {
                                ModelFile.CopyTo(stream);


                                CarImages.ImagesName  = ArrFileName;
                                CarImages.FolderName  = NewThumbString;
                                CarImages.CarsId      = GetLastCar().Id;
                                CarImages.CreatedDate = DateTime.Now;
                                CarImages.Cid         = AutoId();
                                _context.Add(CarImages);
                                await _context.SaveChangesAsync();

                                transaction.CommitAsync();
                            }
                        }
                    }
                    counter++;
                }

                // _context.Remove(GetLastCar());
                // await _context.SaveChangesAsync();
                Message = "Successful;";
                return(RedirectToPage("./Index"));
            }
            return(this.Content("Failed"));
        }