public async Task <IActionResult> RestoreFile(int fileId, ThumbRatioEnum ratio, bool includeFileDeleted = false) { try { var result = await _fileService.RestoreFile(fileId, ratio, includeFileDeleted); return(Ok(result)); } catch (Exception ex) { return(BadRequest(ex)); } }
public async Task <IActionResult> GetFileUrl(int id, ThumbRatioEnum ratio) { try { var result = await _fileService.GetFileById(id, ratio); return(Ok(result)); } catch (Exception ex) { return(BadRequest(ex)); } }
public BaseResponse <string> GetImageUrlByIdAndRatio(int id, ThumbRatioEnum ratio, string actionUrl = "") { try { if (string.IsNullOrWhiteSpace(actionUrl)) { actionUrl = string.Format(GET_IMAGE_URL_BY_ID_RATIO, id, (int)ratio); } string url = _fileStreamHost + actionUrl; var response = Get <string>(url); return(response); } catch (Exception ex) { return(BaseResponse <string> .InternalServerError(ex : ex)); } }
public async Task <string> GetFileById(int id, ThumbRatioEnum ratio) { try { string resUrl = string.Empty; var res = await _aPIExcute.GetData <string>($"{_baseFileStreamAPIUrl}{_adminPortalApiUrl.FileStreamAPI.File}/{id}/{(int)ratio}", null, _basicAPIToken); if (res.IsSuccessStatusCode) { resUrl = res.ResponseData; } return(resUrl); } catch { throw; } }
public async Task <IViewComponentResult> InvokeAsync(int fileId = 0, ThumbRatioEnum ratio = ThumbRatioEnum.full) { var result = await _fileStreamService.GetFileById(fileId, ratio); return(Content(result)); }
public async Task <bool> RestoreFile(int fileId, ThumbRatioEnum ratio, bool includeFileDeleted) { try { var fileInfo = _dataContext.FileStreamInfo.Where(x => x.FileId == fileId).FirstOrDefault(); if (fileInfo != null) { //Check deletd if (includeFileDeleted && fileInfo.Deleted == true) { RestoreFileInfo(fileInfo.FileId); } //Data var fileBinary = await GetFileDataById(fileId); byte[] fileThumb12; byte[] fileThumb16; byte[] fileThumb14; byte[] fileThumb18; //Info var fileName = fileInfo.FileName; var fileNameWithoutEx = Path.GetFileNameWithoutExtension(fileName); var fileEx = fileInfo.FileExtentions; //Path var pathRoot = _aqFileProvider.GetAbsolutePath(); var relativePath = fileInfo.Path.Replace("/", @"\"); var saveFilePath = $@"{pathRoot}\{relativePath}"; var fullPath = $@"{saveFilePath}{fileName}"; var pathThumb12 = $@"{saveFilePath}{fileNameWithoutEx}_12{fileEx}"; var pathThumb14 = $@"{saveFilePath}{fileNameWithoutEx}_14{fileEx}"; var pathThumb16 = $@"{saveFilePath}{fileNameWithoutEx}_16{fileEx}"; var pathThumb18 = $@"{saveFilePath}{fileNameWithoutEx}_18{fileEx}"; var checkDirectoryExists = _aqFileProvider.DirectoryExists(saveFilePath); if (!checkDirectoryExists) { _aqFileProvider.CreateDirectory(saveFilePath); } var checkFileExist = _aqFileProvider.FileExists(fullPath); if (!checkFileExist) { var isImageFile = _pictureService.GetImageFormat(fileBinary) != ImageFormatEnum.unknown; if (isImageFile) { int quality = 100; //in MB double fileSize = Convert.ToDouble(fileBinary.Length.ToString()) / 1024 / 1024; if (fileSize >= 4) { quality = 45; } else if (fileSize >= 2 && fileSize < 4) { quality = 65; } else if (fileSize > 0.5 && fileSize < 2) { quality = 85; } fileBinary = _pictureService.ValidatePicture(fileBinary, 2048, quality); //Restore by ratio switch ((int)ratio) { case 2: fileThumb12 = _pictureService.ResizePicture(fileBinary, (int)ThumbRatioEnum.half, quality); using (Stream f = File.OpenWrite(pathThumb12)) { await f.WriteAsync(fileThumb12, 0, fileThumb12.Length); }; break; case 4: fileThumb14 = _pictureService.ResizePicture(fileBinary, (int)ThumbRatioEnum.quarter, quality); using (Stream f = File.OpenWrite(pathThumb14)) { await f.WriteAsync(fileThumb14, 0, fileThumb14.Length); }; break; case 6: fileThumb16 = _pictureService.ResizePicture(fileBinary, (int)ThumbRatioEnum.oneSixth, quality); using (Stream f = File.OpenWrite(pathThumb16)) { await f.WriteAsync(fileThumb16, 0, fileThumb16.Length); }; break; case 8: fileThumb18 = _pictureService.ResizePicture(fileBinary, (int)ThumbRatioEnum.oneEighth, quality); using (Stream f = File.OpenWrite(pathThumb18)) { await f.WriteAsync(fileThumb18, 0, fileThumb18.Length); }; break; default: using (Stream f = File.OpenWrite(fullPath)) { await f.WriteAsync(fileBinary, 0, fileBinary.Length); }; break; } return(true); } } return(false); } else { throw new FileNotFoundException(); } } catch { throw; } }
public async Task <string> GetFileById(int id, ThumbRatioEnum ratio) { try { var isSSL = _webHelper.IsCurrentConnectionSecured(); var fileInfo = await GetFileInfoById(id); //var pathHost = _webHelper.GetStoreLocation(isSSL); var pathHost = host; var result = ""; var linkDefault = ""; if (fileInfo != null) { var fileName = Path.GetFileNameWithoutExtension(fileInfo.FileName); switch ((int)ratio) { case 2: result = $"{pathHost}{fileInfo.Path}{fileName}_12{fileInfo.FileExtentions}"; break; case 4: result = $"{pathHost}{fileInfo.Path}{fileName}_14{fileInfo.FileExtentions}"; break; case 6: result = $"{pathHost}{fileInfo.Path}{fileName}_16{fileInfo.FileExtentions}"; break; case 8: result = $"{pathHost}{fileInfo.Path}{fileName}_18{fileInfo.FileExtentions}"; break; default: result = $"{pathHost}{fileInfo.Path}{fileName}{fileInfo.FileExtentions}"; break; } var pathCheck = $@"{_hostingEnvironment.WebRootPath}\{result.Replace($"{pathHost}", "").Replace("/", @"\")}"; if (!_aqFileProvider.FileExists(pathCheck)) { if (fileInfo.FileTypeFid == (int)FileTypeEnum.Avatar) { linkDefault = $@"{pathHost}{AQMediaDefaults.DefaultImagePath}{AQMediaDefaults.DefaultAvatarFileName}"; } else { linkDefault = $@"{pathHost}{AQMediaDefaults.DefaultImagePath}{AQMediaDefaults.DefaultImageFileName}"; } return(linkDefault); } } else { linkDefault = $@"{pathHost}{AQMediaDefaults.DefaultImagePath}{AQMediaDefaults.DefaultImageFileName}"; return(linkDefault); } return(result); } catch { throw; } }
///// <summary> ///// Get File By Id ///// </summary> ///// <param name="id">File Id</param> ///// <returns>File url</returns> //public async Task<string> GetFileById(int id) //{ // return string.Empty; //} /// <summary> /// Get File By Id /// </summary> /// <param name="id">File Id</param> /// <param name="ratio">Image ratio</param> /// <returns>File url</returns> public async Task <string> GetFileById(int id, ThumbRatioEnum ratio) { return(await GetFileUrl(id, (int)ratio)); }