コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
 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));
     }
 }
コード例 #4
0
        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;
            }
        }
コード例 #5
0
        public async Task <IViewComponentResult> InvokeAsync(int fileId = 0, ThumbRatioEnum ratio = ThumbRatioEnum.full)
        {
            var result = await _fileStreamService.GetFileById(fileId, ratio);

            return(Content(result));
        }
コード例 #6
0
        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;
            }
        }
コード例 #7
0
        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;
            }
        }
コード例 #8
0
        ///// <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));
        }