Esempio n. 1
0
        public void AddPhotoToDb(UploadedPhoto uploadedPhoto, FamilyArchiveContext context)
        {
            if (context.Photos.Where(p => p.Name == uploadedPhoto.filename && !p.IsThumbnail).FirstOrDefault() == null)
            {
                byte[] Base64Photo;
                if (uploadedPhoto.fileContent.Length > 1000000)
                {
                    MemoryStream memoryStream = new MemoryStream(uploadedPhoto.fileContent);

                    ImageOptimizer imageOptimizer = new ImageOptimizer();
                    imageOptimizer.LosslessCompress(memoryStream);

                    using (MagickImage sprite = new MagickImage(memoryStream))
                    {
                        sprite.Quality = 100;

                        sprite.AutoOrient();

                        if (sprite.Width > sprite.Height)
                        {
                            sprite.Resize(1280, 960);
                        }
                        else
                        {
                            sprite.Resize(960, 1280);
                        }

                        Base64Photo = Encoding.ASCII.GetBytes(sprite.ToBase64());
                    }
                }
                else
                {
                    Base64Photo = Encoding.ASCII.GetBytes(Convert.ToBase64String(uploadedPhoto.fileContent));
                }

                Photos DbPhotoToAdd = new Photos();
                DbPhotoToAdd.Name        = uploadedPhoto.filename;
                DbPhotoToAdd.IsThumbnail = false;
                DbPhotoToAdd.PhotoBase64 = Base64Photo;
                context.Photos.Add(DbPhotoToAdd);
            }
        }
Esempio n. 2
0
        public async Task <IActionResult> UploadPhotos(string path, [FromForm] IList <IFormFile> photos)
        {
            List <UploadedPhoto> uploadedPhotos = new List <UploadedPhoto>();

            for (int i = 0; i < photos.Count; i++)
            {
                string fileName = string.Empty;
                if (string.IsNullOrEmpty(path))
                {
                    fileName = photos[i].FileName;
                }
                else
                {
                    fileName = Path.Combine(path, photos[i].FileName);
                }

                MemoryStream memoryStream = new MemoryStream();
                photos[i].CopyTo(memoryStream);

                bool binaryCheck = false;

                if (photos[i].FileName.EndsWith(".mp4"))
                {
                    binaryCheck = memoryStream.IsMp4();
                }
                else if (photos[i].FileName.EndsWith(".jpg") || photos[i].FileName.EndsWith(".jpeg"))
                {
                    binaryCheck = memoryStream.IsJpg();
                }
                else if (photos[i].FileName.EndsWith(".png"))
                {
                    binaryCheck = memoryStream.IsPng();
                }

                if (!binaryCheck)
                {
                    continue;
                }

                UploadedPhoto uploadedPhoto = new UploadedPhoto {
                    filename = fileName, fileContent = memoryStream.ToArray()
                };
                uploadedPhotos.Add(uploadedPhoto);

                string FullPath = _pathHelper.GetFullPathToFile(fileName);
                if (!System.IO.File.Exists(FullPath))
                {
                    await System.IO.File.WriteAllBytesAsync(FullPath, uploadedPhoto.fileContent);
                }
                else
                {
                    uploadedPhotos.Remove(uploadedPhoto);
                }
            }

            Task task = Task.Factory.StartNew(() =>
            {
                using (FamilyArchiveContext db = new FamilyArchiveContext())
                {
                    for (int i = 0; i < uploadedPhotos.Count; i++)
                    {
                        if (uploadedPhotos[i].filename.EndsWith(".png") || uploadedPhotos[i].filename.EndsWith(".jpg") || uploadedPhotos[i].filename.EndsWith(".jpeg"))
                        {
                            _dbService.AddPhotoToDb(uploadedPhotos[i], db);
                        }
                        else if (uploadedPhotos[i].filename.EndsWith(".mp4"))
                        {
                            string FullPathToVideo = _pathHelper.GetFullPathToFile(uploadedPhotos[i].filename);
                            _dbService.GenerateThumbnailForVideo(uploadedPhotos[i].filename, FullPathToVideo, db);
                        }
                    }

                    db.SaveChanges();
                }
            });

            return(Ok());
        }