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 }); } }
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); }
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(); } }
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 }); }
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, }); }