Beispiel #1
0
 private static string GetServerPath(SaveFileInput input)
 {
     if (input.ApiEnabled)
     {
         return(input.Request.Request.Url.Scheme + "://" + input.Request.Request.Url.Authority);
     }
     return(string.Empty);
 }
Beispiel #2
0
        /// <summary>
        /// This version is not for web api
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public static SaveFileOutput SaveFile(SaveFileInput input)
        {
            var relativeFolder     = "/" + input.StaticFolder;
            var serverRoute        = input.RootPath;
            var fileAbsoluteFolder = serverRoute + input.StaticFolder;
            var extension          = Path.GetExtension(input.File.FileName);
            var uniqueFileName     = Guid.NewGuid().ToString("N").Substring(0, 10);
            var storeFileName      = uniqueFileName + extension;
            var sizes = new Dictionary <string, string>();

            using (var stream = input.File.InputStream)
            {
                if (!Directory.Exists(fileAbsoluteFolder))
                {
                    Directory.CreateDirectory(fileAbsoluteFolder);
                }

                var relativeFileFolder    = relativeFolder + "/" + input.UniqueFolder;
                var fileAbsoluteDirectory = fileAbsoluteFolder + "\\" + input.UniqueFolder;
                if (!Directory.Exists(fileAbsoluteDirectory))
                {
                    Directory.CreateDirectory(fileAbsoluteDirectory);
                }
                if (input.ClearFolder)
                {
                    ClearContents(fileAbsoluteDirectory);
                }
                var imgLocation = fileAbsoluteDirectory + "\\" + storeFileName;
                File.WriteAllBytes(imgLocation, ReadFully(stream));
                var fileLocation = GetServerPath(input) + relativeFileFolder + "/" + storeFileName;
                //Optimizations
                if (input.OptimizationOptions != null && input.OptimizationOptions.Optimize)
                {
                    foreach (var optimizationOptionsSize in input.OptimizationOptions.Sizes)
                    {
                        var fixedSize = optimizationOptionsSize.Split('x');
                        var leftSide  = int.Parse(fixedSize[0]);
                        var rightSide = int.Parse(fixedSize[1]);
                        var img       = ReziseImg(leftSide, rightSide, imgLocation, fileAbsoluteDirectory + "\\");
                        if (input.OptimizationOptions.Optimize)
                        {
                            if (Path.GetExtension(img.FileName) != ".gif")
                            {
                                OptimizeImg(img.FileLocation);
                            }
                        }
                        sizes.Add(optimizationOptionsSize, GetServerPath(input) + relativeFileFolder + "/" + img.FileName);
                    }
                    if (input.OptimizationOptions.Optimize)
                    {
                        if (Path.GetExtension(imgLocation) != ".gif")
                        {
                            OptimizeImg(imgLocation);
                        }
                    }
                }
                //!Optimizations

                return(new SaveFileOutput()
                {
                    FileUrl = fileLocation,
                    File = imgLocation,
                    Sizes = sizes
                });
            }
        }