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