diff --git a/aspnet-core/Directory.Build.props b/aspnet-core/Directory.Build.props index dc45008c6..9efa3b881 100644 --- a/aspnet-core/Directory.Build.props +++ b/aspnet-core/Directory.Build.props @@ -32,6 +32,7 @@ 7.0.1 4.0.0 9.0.3 + 1.0.0 5.0.0 6.3.0 7.2.3 diff --git a/aspnet-core/LINGYUN.MicroService.All.sln b/aspnet-core/LINGYUN.MicroService.All.sln index 4f7ed2e39..023038f5f 100644 --- a/aspnet-core/LINGYUN.MicroService.All.sln +++ b/aspnet-core/LINGYUN.MicroService.All.sln @@ -645,6 +645,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "cli", "cli", "{59627844-A66 EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Cli", "modules\cli\LINGYUN.Abp.Cli\LINGYUN.Abp.Cli.csproj", "{2F49E870-DAE2-4D89-98CA-46BBD91C68E2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.OssManagement.FileSystem.Imaging", "modules\oss-management\LINGYUN.Abp.OssManagement.FileSystem.Imaging\LINGYUN.Abp.OssManagement.FileSystem.Imaging.csproj", "{6C8489F4-68B5-4CBC-8463-010C71C23245}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp", "modules\oss-management\LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp\LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp.csproj", "{5177C729-7666-4A6C-9D54-D7E5DEF0E857}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -1651,6 +1655,14 @@ Global {2F49E870-DAE2-4D89-98CA-46BBD91C68E2}.Debug|Any CPU.Build.0 = Debug|Any CPU {2F49E870-DAE2-4D89-98CA-46BBD91C68E2}.Release|Any CPU.ActiveCfg = Release|Any CPU {2F49E870-DAE2-4D89-98CA-46BBD91C68E2}.Release|Any CPU.Build.0 = Release|Any CPU + {6C8489F4-68B5-4CBC-8463-010C71C23245}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6C8489F4-68B5-4CBC-8463-010C71C23245}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6C8489F4-68B5-4CBC-8463-010C71C23245}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6C8489F4-68B5-4CBC-8463-010C71C23245}.Release|Any CPU.Build.0 = Release|Any CPU + {5177C729-7666-4A6C-9D54-D7E5DEF0E857}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5177C729-7666-4A6C-9D54-D7E5DEF0E857}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5177C729-7666-4A6C-9D54-D7E5DEF0E857}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5177C729-7666-4A6C-9D54-D7E5DEF0E857}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1963,6 +1975,8 @@ Global {1D420BA6-2155-4E0D-AAAF-EECC0330A38C} = {DD1B10ED-73E2-41BE-928A-46501050FE2A} {59627844-A66A-46AC-B882-E8F302D0EC24} = {C5CAD011-DF84-4914-939C-0C029DCEF26F} {2F49E870-DAE2-4D89-98CA-46BBD91C68E2} = {59627844-A66A-46AC-B882-E8F302D0EC24} + {6C8489F4-68B5-4CBC-8463-010C71C23245} = {B05CB08F-C088-4D6D-97EE-A94A5D1AE4A6} + {5177C729-7666-4A6C-9D54-D7E5DEF0E857} = {B05CB08F-C088-4D6D-97EE-A94A5D1AE4A6} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C95FDF91-16F2-4A8B-A4BE-0E62D1B66718} diff --git a/aspnet-core/NuGet.Config b/aspnet-core/NuGet.Config new file mode 100644 index 000000000..d2149a970 --- /dev/null +++ b/aspnet-core/NuGet.Config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/cli/LINGYUN.Abp.Cli/LINGYUN.Abp.Cli.csproj b/aspnet-core/modules/cli/LINGYUN.Abp.Cli/LINGYUN.Abp.Cli.csproj index 0b75adb34..2cc01aa93 100644 --- a/aspnet-core/modules/cli/LINGYUN.Abp.Cli/LINGYUN.Abp.Cli.csproj +++ b/aspnet-core/modules/cli/LINGYUN.Abp.Cli/LINGYUN.Abp.Cli.csproj @@ -5,7 +5,7 @@ Exe net7.0 - 7.2.1 + 7.3.2 colin Use LINGYUN.MicroService.Templates command line true diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetFileMultiTenancyInput.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetFileMultiTenancyInput.cs new file mode 100644 index 000000000..a49fcc9a8 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetFileMultiTenancyInput.cs @@ -0,0 +1,27 @@ +using System; +using Volo.Abp.MultiTenancy; + +namespace LINGYUN.Abp.OssManagement; +public abstract class GetFileMultiTenancyInput +{ + /// + /// 解决通过路由传递租户标识时,abp写入cookies + /// + public string TenantId { get; set; } + + public virtual Guid? GetTenantId(ICurrentTenant currentTenant) + { + if (!TenantId.IsNullOrWhiteSpace()) + { + if ("global".Equals(TenantId, StringComparison.InvariantCultureIgnoreCase)) + { + return null; + } + if (Guid.TryParse(TenantId, out var tenantId)) + { + return tenantId; + } + } + return currentTenant.Id; + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetPublicFileInput.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetPublicFileInput.cs index 296692499..1a2bf31fe 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetPublicFileInput.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetPublicFileInput.cs @@ -1,9 +1,8 @@ -using System; -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace LINGYUN.Abp.OssManagement { - public class GetPublicFileInput + public class GetPublicFileInput : GetFileMultiTenancyInput { [Required] public string Name { get; set; } @@ -11,9 +10,5 @@ namespace LINGYUN.Abp.OssManagement public string Path { get; set; } public string Process { get; set; } - /// - /// 解决通过路由传递租户标识时,abp写入cookies - /// - public Guid? TenantId { get; set; } } } diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetStaticFileInput.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetStaticFileInput.cs index 0ab69a4c7..a640e5a66 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetStaticFileInput.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetStaticFileInput.cs @@ -1,9 +1,8 @@ -using System; -using System.ComponentModel.DataAnnotations; - +using System.ComponentModel.DataAnnotations; + namespace LINGYUN.Abp.OssManagement { - public class GetStaticFileInput + public class GetStaticFileInput : GetFileMultiTenancyInput { [Required] public string Name { get; set; } @@ -13,9 +12,5 @@ namespace LINGYUN.Abp.OssManagement public string Bucket { get; set; } public string Process { get; set; } - /// - /// 解决通过路由传递租户标识时,abp写入cookies - /// - public Guid? TenantId { get; set; } } } diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureNames.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureNames.cs index 8dd16b091..1dbc6829e 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureNames.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureNames.cs @@ -4,7 +4,7 @@ { public const string GroupName = "AbpOssManagement"; /// - /// 是否运行未经授权的用户访问公共目录 + /// 是否允许未经授权的用户访问公共目录 /// public const string PublicAccess = GroupName + ".PublicAccess"; diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj index 57eee08c8..7f80ebac1 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj @@ -9,7 +9,7 @@ - + diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs index 5a9695d33..5ba8198d4 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs @@ -14,20 +14,12 @@ namespace LINGYUN.Abp.OssManagement.FileSystem.ImageSharp { public class ImageSharpProcesserContributor : IFileSystemOssObjectProcesserContributor { - protected static readonly string[] ImageTypes = new string[] - { - "6677",// bmp - "7173",// gif - "13780",// png - "255216"// jpg - }; - public async virtual Task ProcessAsync(FileSystemOssObjectContext context) { var copyStream = context.OssObject.Content; var bytes = await copyStream.GetAllBytesAsync(); - if (IsImage(bytes)) + if (bytes.IsImage()) { var args = context.Process.Split(','); if (DrawGraphics(bytes, args, out var content)) @@ -45,8 +37,8 @@ namespace LINGYUN.Abp.OssManagement.FileSystem.ImageSharp using var image = Image.Load(fileBytes, out var format); // 大小 - var width = GetInt32Prarm(args, "w_"); - var height = GetInt32Prarm(args, "h_"); + var width = args.GetInt32Prarm("w_"); + var height = args.GetInt32Prarm("h_"); if (!width.IsNullOrWhiteSpace() && !height.IsNullOrWhiteSpace()) { @@ -76,47 +68,5 @@ namespace LINGYUN.Abp.OssManagement.FileSystem.ImageSharp content = imageStream; return true; } - - private static bool IsImage(byte[] fileBytes) - { - if (fileBytes.IsNullOrEmpty()) - { - return false; - } - - string fileclass = ""; - for (int i = 0; i < 2; i++) - { - fileclass += fileBytes[i].ToString(); - } - - return ImageTypes.Any(type => type.Equals(fileclass)); - } - - private static string GetString(string[] args, string key) - { - if (!args.Any()) - { - return null; - } - - return args - .Where(arg => arg.StartsWith(key)) - .Select(arg => arg.Substring(key.Length)) - .FirstOrDefault(); - } - - private static string GetInt32Prarm(string[] args, string key) - { - if (!args.Any()) - { - return null; - } - - return args - .Where(arg => arg.StartsWith(key)) - .Select(arg => arg.Substring(key.Length)) - .FirstOrDefault(arg => int.TryParse(arg, out _)); - } } } diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/FodyWeavers.xml b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/FodyWeavers.xml new file mode 100644 index 000000000..1715698cc --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/FodyWeavers.xsd b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/FodyWeavers.xsd new file mode 100644 index 000000000..3f3946e28 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/LIINGYUN/Abp/OssManagement/FileSystem/Imaging/ImageSharp/AbpOssManagementFileSystemImagingImageSharpModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/LIINGYUN/Abp/OssManagement/FileSystem/Imaging/ImageSharp/AbpOssManagementFileSystemImagingImageSharpModule.cs new file mode 100644 index 000000000..6378db3f6 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/LIINGYUN/Abp/OssManagement/FileSystem/Imaging/ImageSharp/AbpOssManagementFileSystemImagingImageSharpModule.cs @@ -0,0 +1,12 @@ +using LINGYUN.Abp.OssManagement.FileSystem.Imaging; +using Volo.Abp.Imaging; +using Volo.Abp.Modularity; + +namespace LIINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp; + +[DependsOn( + typeof(AbpImagingImageSharpModule), + typeof(AbpOssManagementFileSystemImagingModule))] +public class AbpOssManagementFileSystemImagingImageSharpModule : AbpModule +{ +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp.csproj new file mode 100644 index 000000000..f45925351 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp.csproj @@ -0,0 +1,19 @@ + + + + + + + netstandard2.1 + + + + + + + + + + + + diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/FodyWeavers.xml b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/FodyWeavers.xml new file mode 100644 index 000000000..1715698cc --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/FodyWeavers.xsd b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/FodyWeavers.xsd new file mode 100644 index 000000000..3f3946e28 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/LINGYUN.Abp.OssManagement.FileSystem.Imaging.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/LINGYUN.Abp.OssManagement.FileSystem.Imaging.csproj new file mode 100644 index 000000000..b1199ba14 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/LINGYUN.Abp.OssManagement.FileSystem.Imaging.csproj @@ -0,0 +1,19 @@ + + + + + + + netstandard2.1 + + + + + + + + + + + + diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/LINGYUN/Abp/OssManagement/FileSystem/Imaging/AbpImagingProcesserContributor.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/LINGYUN/Abp/OssManagement/FileSystem/Imaging/AbpImagingProcesserContributor.cs new file mode 100644 index 000000000..e840cd7e5 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/LINGYUN/Abp/OssManagement/FileSystem/Imaging/AbpImagingProcesserContributor.cs @@ -0,0 +1,75 @@ +using Microsoft.Extensions.DependencyInjection; +using System; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp.Imaging; + +namespace LINGYUN.Abp.OssManagement.FileSystem.Imaging; +public class AbpImagingProcesserContributor : IFileSystemOssObjectProcesserContributor +{ + public async virtual Task ProcessAsync(FileSystemOssObjectContext context) + { + Stream processSreeam = new MemoryStream(); + var copyStream = context.OssObject.Content; + await copyStream.CopyToAsync(processSreeam); + copyStream.Seek(0, SeekOrigin.Begin); + var bytes = await copyStream.GetAllBytesAsync(); + + if (bytes.IsImage()) + { + var args = context.Process.Split(','); + + if (Resize(args, out var resizeArgs)) + { + var imageResizer = context.ServiceProvider.GetRequiredService(); + var resizeResult = await imageResizer.ResizeAsync(processSreeam, resizeArgs); + if (resizeResult.State == ImageProcessState.Done) + { + processSreeam = resizeResult.Result; + } + } + if (Compress(args)) + { + var imageCompressor = context.ServiceProvider.GetRequiredService(); + var compressResult = await imageCompressor.CompressAsync(processSreeam); + if (compressResult.State == ImageProcessState.Done) + { + processSreeam = compressResult.Result; + } + } + if (processSreeam.Length != copyStream.Length) + { + context.SetContent(processSreeam); + // 释放原图形流数据 + await copyStream.DisposeAsync(); + } + else + { + await processSreeam.DisposeAsync(); + } + } + } + + protected virtual bool Resize(string[] args, out ImageResizeArgs resizeArgs) + { + // 大小 + var width = args.GetInt32Prarm("w_"); + var height = args.GetInt32Prarm("h_"); + if (!width.IsNullOrWhiteSpace() && + !height.IsNullOrWhiteSpace()) + { + resizeArgs = new ImageResizeArgs( + int.Parse(width), + int.Parse(height)); + return true; + } + resizeArgs = null; + return false; + } + + protected virtual bool Compress(string[] args) + { + return args.Contains("cm"); + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/LINGYUN/Abp/OssManagement/FileSystem/Imaging/AbpOssManagementFileSystemImagingModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/LINGYUN/Abp/OssManagement/FileSystem/Imaging/AbpOssManagementFileSystemImagingModule.cs new file mode 100644 index 000000000..ebe8496e6 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/LINGYUN/Abp/OssManagement/FileSystem/Imaging/AbpOssManagementFileSystemImagingModule.cs @@ -0,0 +1,18 @@ +using Volo.Abp.Imaging; +using Volo.Abp.Modularity; + +namespace LINGYUN.Abp.OssManagement.FileSystem.Imaging; + +[DependsOn( + typeof(AbpImagingAbstractionsModule), + typeof(AbpOssManagementFileSystemModule))] +public class AbpOssManagementFileSystemImagingModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.AddProcesser(new AbpImagingProcesserContributor()); + }); + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/System/ByteExtensions.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/System/ByteExtensions.cs new file mode 100644 index 000000000..ccf86b05c --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/System/ByteExtensions.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace System; +public static class ByteExtensions +{ + private readonly static string[] ImageTypes = new string[] + { + "6677",// bmp + "7173",// gif + "13780",// png + "255216"// jpg + }; + + public static bool IsImage(this byte[] fileBytes) + { + if (fileBytes.IsNullOrEmpty()) + { + return false; + } + + string fileclass = ""; + for (int i = 0; i < 2; i++) + { + fileclass += fileBytes[i].ToString(); + } + + return ImageTypes.Any(type => type.Equals(fileclass)); + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/System/StringArrayArgsExtensions.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/System/StringArrayArgsExtensions.cs new file mode 100644 index 000000000..fdad716e9 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/System/StringArrayArgsExtensions.cs @@ -0,0 +1,31 @@ +using System.Linq; + +namespace System; +public static class StringArrayArgsExtensions +{ + public static string GetStringPrarm(this string[] args, string key) + { + if (!args.Any()) + { + return null; + } + + return args + .Where(arg => arg.StartsWith(key)) + .Select(arg => arg.Substring(key.Length)) + .FirstOrDefault(); + } + + public static string GetInt32Prarm(this string[] args, string key) + { + if (!args.Any()) + { + return null; + } + + return args + .Where(arg => arg.StartsWith(key)) + .Select(arg => arg.Substring(key.Length)) + .FirstOrDefault(arg => int.TryParse(arg, out _)); + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/PrivateFilesController.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/PrivateFilesController.cs index 359f3dddc..101710016 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/PrivateFilesController.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/PrivateFilesController.cs @@ -57,7 +57,7 @@ namespace LINGYUN.Abp.OssManagement [Route("t/{TenantId}/p/{Path}/{Name}/{Process}")] public async virtual Task GetAsync([FromRoute] GetPublicFileInput input) { - using (CurrentTenant.Change(input.TenantId ?? CurrentTenant.Id)) + using (CurrentTenant.Change(input.GetTenantId(CurrentTenant))) { return await _service.GetAsync(input); } diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/PublicFilesController.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/PublicFilesController.cs index c016dc6e1..c59dacdb8 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/PublicFilesController.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/PublicFilesController.cs @@ -56,7 +56,7 @@ namespace LINGYUN.Abp.OssManagement [Route("t/{TenantId}/p/{Path}/{Name}/{Process}")] public async virtual Task GetAsync([FromRoute] GetPublicFileInput input) { - using (CurrentTenant.Change(input.TenantId ?? CurrentTenant.Id)) + using (CurrentTenant.Change(input.GetTenantId(CurrentTenant))) { return await _publicFileAppService.GetAsync(input); } diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/StaticFilesController.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/StaticFilesController.cs index ae5ea598d..d0e0ec318 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/StaticFilesController.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/StaticFilesController.cs @@ -45,7 +45,7 @@ namespace LINGYUN.Abp.OssManagement [Route("t/{TenantId}/{Bucket}/p/{Path}/{Name}/{Process}")] public async virtual Task GetAsync([FromRoute] GetStaticFileInput input) { - using (CurrentTenant.Change(input.TenantId ?? CurrentTenant.Id)) + using (CurrentTenant.Change(input.GetTenantId(CurrentTenant))) { return await _staticFilesAppServic.GetAsync(input); } diff --git a/aspnet-core/modules/oss-management/README.md b/aspnet-core/modules/oss-management/README.md index 5aa93b44f..1ff3996bf 100644 --- a/aspnet-core/modules/oss-management/README.md +++ b/aspnet-core/modules/oss-management/README.md @@ -20,6 +20,8 @@ File-Management更名为Oss-Management * [LINGYUN.Abp.OssManagement.Aliyun](./LINGYUN.Abp.OssManagement.Aliyun) Oss管理的阿里云实现,实现了部分阿里云Oss服务的容器与对象管理 * [LINGYUN.Abp.OssManagement.FileSystem](./LINGYUN.Abp.OssManagement.FileSystem) Oss管理的本地文件系统实现,实现了部分本地文件系统的容器(目录)与对象(文件/目录)管理 * [LINGYUN.Abp.OssManagement.FileSystem.ImageSharp](./LINGYUN.Abp.OssManagement.FileSystem.ImageSharp) Oss本地对象的ImageSharp扩展,当前端传递需求处理对象时,此模块用于实现基于图形文件流的处理 +* [LINGYUN.Abp.OssManagement.FileSystem.Imaging](./LINGYUN.Abp.OssManagement.FileSystem.Imaging) Oss本地对象的Volo.Abp.Imaging扩展 +* [LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp](./LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp) Oss本地对象的Volo.Abp.Imaging.ImageSharp扩展 ### 权限定义 @@ -52,3 +54,4 @@ File-Management更名为Oss-Management *【2021-03-10】 变更FileManagement命名空间为OssManagement *【2021-10-22】 增加PublicFilesController用于身份认证通过的用户上传/下载文件,所有操作限定在用户目录下 *【2021-12-13】 增加LINGYUN.Abp.BlobStoring.OssManagement用于实现Oss代理二进制文件存储 +*【2023-09-04】 集成Volo.Abp.Imaging模块用于图形文件流处理 diff --git a/aspnet-core/templates/content/Directory.Build.props b/aspnet-core/templates/content/Directory.Build.props index 5d1e2d2f9..ad38fa765 100644 --- a/aspnet-core/templates/content/Directory.Build.props +++ b/aspnet-core/templates/content/Directory.Build.props @@ -1,33 +1,49 @@ - 1.6.9 - 7.2.2 - 7.2.2 - 7.1.0 - 1.10.0 + 7.3.2 + 2.3.2 + 7.3.2 + 1.11.0 1.0.2 + 7.2.0 + 2.11.0 + 1.5.10 + 2.13.0 + 3.0.712 + 1.6.9 + 2.0.3 + 1.8.2 + 7.15.1 + 13.0.1 1.0.0-rc8 1.3.1 1.0.0-rc8 1.0.0-rc8 1.0.0-beta2 - 2.10.0 - 1.5.0 - 5.0.0 + 3.3.3 + 2.2.4 + 2.12.0 + 7.0.0 2.2.0 2.0.0 - 2.0.1 + 2.0.2 3.1.0 3.0.1 - 3.4.0 + 7.0.1 4.0.0 - 8.4.1 + 9.0.3 5.0.0 - 6.1.5 + 6.3.0 + 7.2.3 7.0.* 7.0.2 2.4.1 3.0.2 4.2.1 + 17.3.2 + 2.5.0 + 3.0.2 + 4.2.1 + 3.0.2 \ No newline at end of file diff --git a/aspnet-core/templates/content/PackageName.CompanyName.ProjectName.sln b/aspnet-core/templates/content/PackageName.CompanyName.ProjectName.sln index 0ea10a454..baccd1688 100644 --- a/aspnet-core/templates/content/PackageName.CompanyName.ProjectName.sln +++ b/aspnet-core/templates/content/PackageName.CompanyName.ProjectName.sln @@ -30,6 +30,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".Solution Items", ".Solutio common.props = common.props configureawait.props = configureawait.props Directory.Build.props = Directory.Build.props + ..\..\NuGet.Config = ..\..\NuGet.Config EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{4786387C-C1C5-46F8-806F-EBC54DB0A4FA}" diff --git a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/PackageName.CompanyName.ProjectName.DbMigrator.csproj b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/PackageName.CompanyName.ProjectName.DbMigrator.csproj index aa926d275..d12f950b5 100644 --- a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/PackageName.CompanyName.ProjectName.DbMigrator.csproj +++ b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/PackageName.CompanyName.ProjectName.DbMigrator.csproj @@ -11,7 +11,6 @@ - diff --git a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/Program.cs b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/Program.cs index 8f6151dfe..087267054 100644 --- a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/Program.cs +++ b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/Program.cs @@ -20,8 +20,8 @@ public class Program .MinimumLevel.Override("PackageName.CompanyName.ProjectName", LogEventLevel.Information) #endif .Enrich.FromLogContext() - .WriteTo.Async(c => c.File("Logs/logs.txt")) - .WriteTo.Async(c => c.Console()) + .WriteTo.File("Logs/logs.txt") + .WriteTo.Console() .CreateLogger(); await CreateHostBuilder(args).RunConsoleAsync();