diff --git a/modules/blogging/src/Volo.Blogging.Admin.Application/Volo.Blogging.Admin.Application.csproj b/modules/blogging/src/Volo.Blogging.Admin.Application/Volo.Blogging.Admin.Application.csproj index 4db4a03862..456777e60a 100644 --- a/modules/blogging/src/Volo.Blogging.Admin.Application/Volo.Blogging.Admin.Application.csproj +++ b/modules/blogging/src/Volo.Blogging.Admin.Application/Volo.Blogging.Admin.Application.csproj @@ -11,7 +11,10 @@ - + + + + diff --git a/modules/blogging/src/Volo.Blogging.Application/Volo.Blogging.Application.csproj b/modules/blogging/src/Volo.Blogging.Application/Volo.Blogging.Application.csproj index cde97b1091..504d32836d 100644 --- a/modules/blogging/src/Volo.Blogging.Application/Volo.Blogging.Application.csproj +++ b/modules/blogging/src/Volo.Blogging.Application/Volo.Blogging.Application.csproj @@ -9,9 +9,12 @@ Volo.Blogging.Application + + + + - diff --git a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Files/FileUploadConsts.cs b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Files/FileUploadConsts.cs index 28cb3491f3..d7164dc261 100644 --- a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Files/FileUploadConsts.cs +++ b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Files/FileUploadConsts.cs @@ -1,20 +1,24 @@ using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Drawing.Imaging; using System.Linq; +using SixLabors.ImageSharp.Formats; +using SixLabors.ImageSharp.Formats.Bmp; +using SixLabors.ImageSharp.Formats.Gif; +using SixLabors.ImageSharp.Formats.Jpeg; +using SixLabors.ImageSharp.Formats.Png; namespace Volo.Blogging.Files { public class FileUploadConsts { - public static readonly ICollection AllowedImageUploadFormats = new Collection + public static readonly ICollection AllowedImageUploadFormats = new Collection { - ImageFormat.Jpeg, - ImageFormat.Png, - ImageFormat.Gif, - ImageFormat.Bmp + JpegFormat.Instance, + PngFormat.Instance, + GifFormat.Instance, + BmpFormat.Instance, }; - public static string AllowedImageFormatsJoint => string.Join(",", AllowedImageUploadFormats.Select(x => x.ToString())); + public static string AllowedImageFormatsJoint => string.Join(",", AllowedImageUploadFormats.Select(x => x.Name)); } } diff --git a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Files/ImageFormatHelper.cs b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Files/ImageFormatHelper.cs index 6a9521664d..9fccb1e03a 100644 --- a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Files/ImageFormatHelper.cs +++ b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Files/ImageFormatHelper.cs @@ -1,27 +1,33 @@ -using System.Collections.Generic; -using System.Drawing.Imaging; +using System; +using System.Collections.Generic; using System.IO; -using System.Runtime.InteropServices; +using SixLabors.ImageSharp; +using SixLabors.ImageSharp.Formats; namespace Volo.Blogging.Areas.Blog.Helpers { public class ImageFormatHelper { - public static ImageFormat GetImageRawFormat(Stream stream) + public static IImageFormat GetImageRawFormat(Stream stream) { - return System.Drawing.Image.FromStream(stream).RawFormat; + using (var image = Image.Load(stream, out var imageFormat)) + { + return imageFormat; + } } - public static bool IsValidImage(Stream stream, ICollection validFormats) + public static bool IsValidImage(Stream stream, ICollection validFormats) { - // System.Drawing only works on windows => https://docs.microsoft.com/en-us/dotnet/api/system.drawing.image?view=net-5.0#remarks - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + try { var imageFormat = GetImageRawFormat(stream); + return validFormats.Contains(imageFormat); } - - return true; + catch (Exception e) + { + return false; + } } } }