public UploadModel Upload(IEnumerable <HttpPostedFileBase> files, UploadModel listModel) { var model = HttpContext.Current.Session["Uploads"] != null ? HttpContext.Current.Session["Uploads"] as UploadModel : new UploadModel(); int maxId = 0; int order = 0; var paintings = GetPaintings().Paintings; // Если в БД уже есть фотографии, значит получаем макс. Id фотографии if (paintings.Any()) { maxId = paintings.Max(x => x.Id); order = paintings.Max(x => x.Order); } // Проверяем, имеются ли в сессии уже загруженные фотогарфии, если да, то берем за макс Id значение из сессии if (model.Uploads.Any()) { maxId = model.Uploads.Max(x => x.Id); order = model.Uploads.Max(x => x.Order); } foreach (var file in files) { var filename = $"photo_Ph-S{++maxId}"; var photoUploadModel = new PaintingUploadModel() { Id = maxId, FileName = filename, PhotoPath = AppDefaults.PhotoPath + filename + Path.GetExtension(file.FileName).ToLower(), ThumbnailPath = AppDefaults.ThumbPath + filename + "s" + Path.GetExtension(file.FileName).ToLower(), CreationDate = TimeZone.CurrentTimeZone.ToLocalTime(DateTime.Now), Order = ++order }; if (file.ContentLength < 4048576) { if (file != null) { _imageProcessor.CreateThumbnail(file, 350, 350, filename); file.SaveAs(HttpContext.Current.Server.MapPath(photoUploadModel.PhotoPath)); model.Uploads.Add(photoUploadModel); HttpContext.Current.Session["Uploads"] = model; } } } return(model); }
public Photo UpdateOne(PhotoUploadModel model, HttpPostedFileBase file, IImageProcessor processor) { var photoToTags = _providerPhotoToTag.GetAll(); var relatedTagIds = photoToTags.GetRelatedTags(model.Id).Select(x => x.Id).ToArray(); if (relatedTagIds.Length > 0) { _providerPhotoToTag.DeleteMany(relatedTagIds); _providerPhoto.Commit(); //TODO: продумать } if (file != null) { if (file.ContentLength != 0 && file.ContentLength < 4048576) { processor.CreateThumbnail(file, 350, 350, model.FileName); file.SaveAs(HttpContext.Current.Server.MapPath(model.PhotoPath)); } } var photos = _providerPhoto.UpdateOne(_converter.ConvertTo(model)); _providerWatermark.UpdateOne(_converterWatermark.ConvertTo(model.ImageAttributes)); if (model.RelatedTagIds != null) { _providerPhotoToTag.AddMany(model.RelatedTagIds .Select(x => new PhotoToTag() { Id = 0, PhotoId = model.Id, TagId = x }).ToArray() ); } _providerPhoto.Commit(); return(photos); }
public async Task <Result> Upload() { var filename = Request.Headers["x-filename"]; if (string.IsNullOrEmpty(filename)) { return(Result.Failure("Missing filename")); } if (Request.ContentLength == 0) { return(Result.Failure("Missing file contents")); } return(await Shield(async() => { var originalContent = new byte[Request.ContentLength.GetValueOrDefault()]; using (var memory = new MemoryStream(originalContent)) { await Request.Body.CopyToAsync(memory); } var visionAnalysisTask = _imageProcessor.ProcessPhoto(originalContent); var thumbnailContentTask = _imageProcessor.CreateThumbnail(originalContent); // run parallel independent APIs await Task.WhenAll(visionAnalysisTask, thumbnailContentTask); await _repository.Add(new Domain.Photo { Name = filename, OriginalContent = originalContent, ThumbnailContent = thumbnailContentTask.Result, VisionAnalysis = visionAnalysisTask.Result }); })); }
public PhotoUploadListModel Upload(IEnumerable <HttpPostedFileBase> files, PhotoUploadListModel listModel, IImageProcessor processor) { var model = HttpContext.Current.Session["Uploads"] != null ? HttpContext.Current.Session["Uploads"] as PhotoUploadListModel : new PhotoUploadListModel(); int maxId = 0; int order = 0; var photos = GetAll().ToList(); // Если в БД уже есть фотографии, значит получаем макс. Id фотографии if (photos.Count > 0) { maxId = photos.Max(x => x.Id); order = photos.Max(x => x.Order); } // Проверяем, имеются ли в сессии уже загруженные фотогарфии, если да, то берем за макс Id значение из сессии if (model.Uploads.Any()) { maxId = model.Uploads.Max(x => x.Id); order = model.Uploads.Max(x => x.Order); } foreach (var file in files) { var filename = $"photo_AS-S{++maxId}"; var photoUploadModel = new PhotoUploadModel() { Id = maxId, FileName = filename, PhotoPath = "~/SysData/PhotoGallery/Photos/" + filename + Path.GetExtension(file.FileName).ToLower(), ThumbnailPath = "~/SysData/PhotoGallery/Thumbs/" + filename + "s" + Path.GetExtension(file.FileName).ToLower(), CreationDate = TimeZone.CurrentTimeZone.ToLocalTime(DateTime.Now), ShowRandom = false, IsForBackground = false, ImageAttributes = new ImageAttrModel() { Id = listModel.ImageAttributes.Id, PhotoId = 0, IsWatermarkApplied = listModel.ImageAttributes.IsWatermarkApplied, IsWatermarkBlack = listModel.ImageAttributes.IsWatermarkBlack, IsSignatureApplied = listModel.ImageAttributes.IsSignatureApplied, IsSignatureBlack = listModel.ImageAttributes.IsSignatureBlack, IsWebSiteTitleApplied = listModel.ImageAttributes.IsWebSiteTitleApplied, IsWebSiteTitleBlack = listModel.ImageAttributes.IsWebSiteTitleBlack, IsRightSide = listModel.ImageAttributes.IsRightSide }, Album = _providerAlbum.GetOne(listModel.AlbumId), Order = ++order }; if (file.ContentLength < 4048576) { if (file != null) { processor.CreateThumbnail(file, 350, 350, filename); photoUploadModel.ImageAttributes.PhotoId = photoUploadModel.Id; file.SaveAs(HttpContext.Current.Server.MapPath(photoUploadModel.PhotoPath)); model.Uploads.Add(photoUploadModel); HttpContext.Current.Session["Uploads"] = model; } } } model.Albums = _providerAlbum.GetAll().Select(x => new SelectListItem() { Value = x.Id.ToString(), Text = x.TitleRu }); return(model); }