Exemple #1
0
        public async Task <FileManagerServiceResult> SaveImage(IFileManagerServiceInput input)
        {
            try
            {
                var filePath     = string.IsNullOrEmpty(input.FilePath) ? SaveFileInTempFolder(input.File, input.CreateUniqueName) : input.FilePath;
                var uploadParams = new ImageUploadParams()
                {
                    File           = new FileDescription(filePath),
                    Folder         = string.IsNullOrEmpty(input.SpecialFolder) ? null : input.SpecialFolder,
                    Transformation = Transformations.TransFormationsConfig.GetTransformationConfiguration(input)
                };
                await Task.FromResult(0);

                var result = _instance.Upload(uploadParams);
                return(new CloudinaryImageUploadResult()
                {
                    SecureUrl = result.SecureUri.AbsoluteUri,
                    Url = result.Uri.AbsoluteUri,
                    PublicId = result.PublicId,
                    CdnUrl = result.Uri.AbsoluteUri,
                    FileName = result.PublicId,
                    ImageSaved = true,
                    ImageSavedInCdn = true
                });
            }
            catch (Exception)
            {
                return(new CloudinaryImageUploadResult()
                {
                    ImageSaved = false
                });
            }
        }
Exemple #2
0
        public async Task <FileManagerServiceResult> SaveImage(IFileManagerServiceInput input)
        {
            if (input.File == null)
            {
                var storeLocalResult = await SaveFromFolder(input);

                return(storeLocalResult);
            }
            var result = await SaveFromFileBase(input);

            return(result);
        }
Exemple #3
0
 private string MoveFile(string targetFolder, FileStream file, IFileManagerServiceInput input)
 {
     try
     {
         var absolutePath         = FileSystemHelper.GetAbsolutePath(targetFolder);
         var absolutePathWithName = absolutePath + Path.GetFileName(file.Name);
         FileSystemHelper.CreateFolder(targetFolder);
         file.Close();
         File.Move(input.FilePath, absolutePathWithName);
         return(targetFolder + Path.GetFileName(file.Name));
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
        public static Transformation GetTransformationConfiguration(IFileManagerServiceInput input)
        {
            var transformationInt       = (int)input.Properties["TransformationType"];
            var parsedTrasformationType = (TransformationsTypes)transformationInt;

            switch (parsedTrasformationType)
            {
            case TransformationsTypes.ProfilePicture120X120:
                return(new Transformation().Width(120).Height(120).Gravity("face").Radius("max").Crop("crop"));

            case TransformationsTypes.SimpleUpload:
                return(new Transformation());

            case TransformationsTypes.ImageWithSize:
                return(new Transformation().Width(input.Properties["Width"]).Height(input.Properties["Height"]));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Exemple #5
0
        public async Task <SavedFileResult> SaveFile(IFileManagerServiceInput input, bool cdnServicesFirst)
        {
            var providers = GetProviders();

            if (cdnServicesFirst)
            {
                providers = providers.OrderByDescending(a => a.IsCdnService).ToList();
            }
            foreach (var fileManagerServiceProvider in providers)
            {
                var result = await fileManagerServiceProvider.SaveImage(input);

                if (result.ImageSavedInCdn)
                {
                    ReleaseAll(providers);
                    return(new SavedFileResult()
                    {
                        AbsolutePath = string.Empty,
                        FileName = result.FileName,
                        Url = result.CdnUrl,
                        VirtualPath = string.Empty,
                        WasStoredInCloud = true
                    });
                }
                if (result.ImageSavedInServer)
                {
                    ReleaseAll(providers);
                    return(new SavedFileResult()
                    {
                        AbsolutePath = result.LocalUrl,
                        FileName = result.FileName,
                        SecureUrl = result.VirtualPathResult.IsNullOrEmpty() ? result.CdnUrl : result.VirtualPathResult,
                        Url = result.VirtualPathResult.IsNullOrEmpty() ? result.CdnUrl : result.VirtualPathResult,
                        VirtualPath = result.VirtualPathResult,
                        WasStoredInCloud = false
                    });
                }
            }
            ReleaseAll(providers);
            throw new InvalidOperationException(nameof(IFileManagerServiceProvider));
        }
        private async Task <FileManagerServiceResult> SaveFromFileBase(IFileManagerServiceInput input)
        {
            var    fileExtension = FileSystemHelper.GetExtension(input.File.FileName);
            var    fileName      = input.File.FileName;
            string route;
            string absolutePath;

            if (input.CreateUniqueName)
            {
                fileName = Guid.NewGuid().ToString().Truncate(8) + fileExtension;
            }

            if (string.IsNullOrEmpty(input.VirtualFolder))
            {
                input.VirtualFolder = string.Format(LocalUserImagesFolder, input.SpecialFolder);
                absolutePath        = FileSystemHelper.GetAbsolutePath(input.VirtualFolder);
                route = absolutePath + fileName;
            }
            else
            {
                absolutePath = FileSystemHelper.GetAbsolutePath(input.VirtualFolder);
                route        = absolutePath + fileName;
            }
            FileSystemHelper.CreateFolder(input.VirtualFolder);
            var virtualFullRoute = input.VirtualFolder + fileName;

            input.File.SaveAs(route);
            await Task.FromResult(0);

            return(new FileManagerServiceResult()
            {
                LocalUrl = route,
                FileName = fileName,
                CdnUrl = virtualFullRoute,

                VirtualPathResult = virtualFullRoute,
                ImageSaved = true,
                ImageSavedInCdn = false,
                ImageSavedInServer = true
            });
        }
Exemple #7
0
        private async Task <FileManagerServiceResult> SaveFromFolder(IFileManagerServiceInput input)
        {
            if (File.Exists(input.FilePath))
            {
                //Fix dis!
                var fileStream    = File.OpenRead(input.FilePath);
                var virtualFolder = await Task.FromResult(MoveFile(!string.IsNullOrEmpty(input.SpecialFolder) ? (input.VirtualFolder + input.SpecialFolder + "/") : GenericFolder, fileStream, input));

                return(new FileManagerServiceResult()
                {
                    VirtualPathResult = virtualFolder,
                    ImageSaved = true,
                    ImageSavedInCdn = false,
                    ImageSavedInServer = true,
                });
            }
            return(new FileManagerServiceResult()
            {
                ImageSaved = false,
                ImageSavedInCdn = false,
            });
        }