Example #1
0
        public bool ProcessStream(Stream fileContent, string extension)
        {
            extension = extension.TrimToEmpty().ToLowerInvariant();
            if (IsDangerousExtension(extension))
            {
                ErrorMessage = "Unsupported file extension!";
                return(false);
            }

            CheckResult  = ImageCheckResult.InvalidImage;
            ErrorMessage = null;
            ImageWidth   = 0;
            ImageHeight  = 0;
            IsImage      = false;

            var success = false;

            var temporaryPath = UploadHelper.TemporaryPath;

            Directory.CreateDirectory(temporaryPath);
            TemporaryFileHelper.PurgeDirectoryDefault(temporaryPath);
            string baseFileName = System.IO.Path.Combine(temporaryPath, Guid.NewGuid().ToString("N"));

            try
            {
                try
                {
                    if (IsImageExtension(extension))
                    {
                        IsImage  = true;
                        success  = true;
                        FilePath = baseFileName + extension;
                        fileContent.Seek(0, SeekOrigin.Begin);
                        using (FileStream fs = new FileStream(FilePath, FileMode.Create))
                        {
                            fileContent.CopyTo(fs);
                            FileSize = fs.Length;
                        }
                        success = ProcessImageStream(fileContent, extension);
                    }
                    else
                    {
                        FilePath = baseFileName + extension;
                        fileContent.Seek(0, SeekOrigin.Begin);
                        using (FileStream fs = new FileStream(FilePath, FileMode.Create))
                        {
                            fileContent.CopyTo(fs);
                            FileSize = fs.Length;
                        }
                        success = true;
                    }
                }
                catch (Exception ex)
                {
                    ErrorMessage = ex.Message;
                    success      = false;
                    return(success);
                }
            }
            finally
            {
                if (!success)
                {
                    if (!ThumbFile.IsNullOrEmpty())
                    {
                        TemporaryFileHelper.TryDelete(ThumbFile);
                    }

                    if (!FilePath.IsNullOrEmpty())
                    {
                        TemporaryFileHelper.TryDelete(FilePath);
                    }
                }

                fileContent.Dispose();
            }

            return(success);
        }
Example #2
0
        public bool ProcessStream(Stream fileContent, string extension,
                                  ITextLocalizer localizer)
        {
            extension = extension.TrimToEmpty().ToLowerInvariant();
            if (IsDangerousExtension(extension))
            {
                ErrorMessage = "Unsupported file extension!";
                return(false);
            }

            CheckResult  = ImageCheckResult.InvalidImage;
            ErrorMessage = null;
            ImageWidth   = 0;
            ImageHeight  = 0;
            IsImage      = false;

            var success = false;

            storage.PurgeTemporaryFiles();
            var basePath = "temporary/" + Guid.NewGuid().ToString("N");

            try
            {
                try
                {
                    FileSize = fileContent.Length;
                    fileContent.Seek(0, System.IO.SeekOrigin.Begin);
                    TemporaryFile = storage.WriteFile(basePath + extension, fileContent, false);

                    if (IsImageExtension(extension))
                    {
                        IsImage = true;
                        success = ProcessImageStream(fileContent, localizer);
                    }
                    else
                    {
                        success = true;
                    }
                }
                catch (Exception ex)
                {
                    ErrorMessage = ex.Message;
                    ex.Log(Logger);
                    success = false;
                    return(success);
                }
            }
            finally
            {
                if (!success)
                {
                    if (!ThumbFile.IsNullOrEmpty())
                    {
                        storage.DeleteFile(ThumbFile);
                    }

                    if (!TemporaryFile.IsNullOrEmpty())
                    {
                        storage.DeleteFile(TemporaryFile);
                    }
                }

                fileContent.Dispose();
            }

            return(success);
        }