Browse Source

Solve the following problems

1、The integrated Volo.Abp.Imaging package has been used to process graphics streams

2、The tenant id is set to global when the file is obtained. The host is supported

3、Version update SixLabors. ImageSharp. Drawing package.
pull/871/head
colin 2 years ago
parent
commit
aea1518a14
  1. 1
      aspnet-core/Directory.Build.props
  2. 14
      aspnet-core/LINGYUN.MicroService.All.sln
  3. 7
      aspnet-core/NuGet.Config
  4. 2
      aspnet-core/modules/cli/LINGYUN.Abp.Cli/LINGYUN.Abp.Cli.csproj
  5. 27
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetFileMultiTenancyInput.cs
  6. 9
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetPublicFileInput.cs
  7. 11
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetStaticFileInput.cs
  8. 2
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureNames.cs
  9. 2
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj
  10. 56
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs
  11. 3
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/FodyWeavers.xml
  12. 30
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/FodyWeavers.xsd
  13. 12
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/LIINGYUN/Abp/OssManagement/FileSystem/Imaging/ImageSharp/AbpOssManagementFileSystemImagingImageSharpModule.cs
  14. 19
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp.csproj
  15. 3
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/FodyWeavers.xml
  16. 30
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/FodyWeavers.xsd
  17. 19
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/LINGYUN.Abp.OssManagement.FileSystem.Imaging.csproj
  18. 75
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/LINGYUN/Abp/OssManagement/FileSystem/Imaging/AbpImagingProcesserContributor.cs
  19. 18
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/LINGYUN/Abp/OssManagement/FileSystem/Imaging/AbpOssManagementFileSystemImagingModule.cs
  20. 31
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/System/ByteExtensions.cs
  21. 31
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/System/StringArrayArgsExtensions.cs
  22. 2
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/PrivateFilesController.cs
  23. 2
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/PublicFilesController.cs
  24. 2
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/StaticFilesController.cs
  25. 3
      aspnet-core/modules/oss-management/README.md
  26. 40
      aspnet-core/templates/content/Directory.Build.props
  27. 1
      aspnet-core/templates/content/PackageName.CompanyName.ProjectName.sln
  28. 1
      aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/PackageName.CompanyName.ProjectName.DbMigrator.csproj
  29. 4
      aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/Program.cs

1
aspnet-core/Directory.Build.props

@ -32,6 +32,7 @@
<SerilogSettingsConfigurationPackageVersion>7.0.1</SerilogSettingsConfigurationPackageVersion> <SerilogSettingsConfigurationPackageVersion>7.0.1</SerilogSettingsConfigurationPackageVersion>
<SerilogSinksConsolePackageVersion>4.0.0</SerilogSinksConsolePackageVersion> <SerilogSinksConsolePackageVersion>4.0.0</SerilogSinksConsolePackageVersion>
<SerilogSinksElasticsearchPackageVersion>9.0.3</SerilogSinksElasticsearchPackageVersion> <SerilogSinksElasticsearchPackageVersion>9.0.3</SerilogSinksElasticsearchPackageVersion>
<SixLaborsImageSharpDrawingPackageVersion>1.0.0</SixLaborsImageSharpDrawingPackageVersion>
<SerilogSinksFilePackageVersion>5.0.0</SerilogSinksFilePackageVersion> <SerilogSinksFilePackageVersion>5.0.0</SerilogSinksFilePackageVersion>
<SwashbuckleAspNetCorePackageVersion>6.3.0</SwashbuckleAspNetCorePackageVersion> <SwashbuckleAspNetCorePackageVersion>6.3.0</SwashbuckleAspNetCorePackageVersion>
<PollyPackageVersion>7.2.3</PollyPackageVersion> <PollyPackageVersion>7.2.3</PollyPackageVersion>

14
aspnet-core/LINGYUN.MicroService.All.sln

@ -645,6 +645,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "cli", "cli", "{59627844-A66
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Cli", "modules\cli\LINGYUN.Abp.Cli\LINGYUN.Abp.Cli.csproj", "{2F49E870-DAE2-4D89-98CA-46BBD91C68E2}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Cli", "modules\cli\LINGYUN.Abp.Cli\LINGYUN.Abp.Cli.csproj", "{2F49E870-DAE2-4D89-98CA-46BBD91C68E2}"
EndProject 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 Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU 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}.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.ActiveCfg = Release|Any CPU
{2F49E870-DAE2-4D89-98CA-46BBD91C68E2}.Release|Any CPU.Build.0 = 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 EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@ -1963,6 +1975,8 @@ Global
{1D420BA6-2155-4E0D-AAAF-EECC0330A38C} = {DD1B10ED-73E2-41BE-928A-46501050FE2A} {1D420BA6-2155-4E0D-AAAF-EECC0330A38C} = {DD1B10ED-73E2-41BE-928A-46501050FE2A}
{59627844-A66A-46AC-B882-E8F302D0EC24} = {C5CAD011-DF84-4914-939C-0C029DCEF26F} {59627844-A66A-46AC-B882-E8F302D0EC24} = {C5CAD011-DF84-4914-939C-0C029DCEF26F}
{2F49E870-DAE2-4D89-98CA-46BBD91C68E2} = {59627844-A66A-46AC-B882-E8F302D0EC24} {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 EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C95FDF91-16F2-4A8B-A4BE-0E62D1B66718} SolutionGuid = {C95FDF91-16F2-4A8B-A4BE-0E62D1B66718}

7
aspnet-core/NuGet.Config

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<add key="LocalNuget" value="./LocalNuget" />
</packageSources>
</configuration>

2
aspnet-core/modules/cli/LINGYUN.Abp.Cli/LINGYUN.Abp.Cli.csproj

@ -5,7 +5,7 @@
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<Version>7.2.1</Version> <Version>7.3.2</Version>
<Copyright>colin</Copyright> <Copyright>colin</Copyright>
<Description>Use LINGYUN.MicroService.Templates command line</Description> <Description>Use LINGYUN.MicroService.Templates command line</Description>
<PackAsTool>true</PackAsTool> <PackAsTool>true</PackAsTool>

27
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
{
/// <summary>
/// 解决通过路由传递租户标识时,abp写入cookies
/// </summary>
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;
}
}

9
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 namespace LINGYUN.Abp.OssManagement
{ {
public class GetPublicFileInput public class GetPublicFileInput : GetFileMultiTenancyInput
{ {
[Required] [Required]
public string Name { get; set; } public string Name { get; set; }
@ -11,9 +10,5 @@ namespace LINGYUN.Abp.OssManagement
public string Path { get; set; } public string Path { get; set; }
public string Process { get; set; } public string Process { get; set; }
/// <summary>
/// 解决通过路由传递租户标识时,abp写入cookies
/// </summary>
public Guid? TenantId { get; set; }
} }
} }

11
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 namespace LINGYUN.Abp.OssManagement
{ {
public class GetStaticFileInput public class GetStaticFileInput : GetFileMultiTenancyInput
{ {
[Required] [Required]
public string Name { get; set; } public string Name { get; set; }
@ -13,9 +12,5 @@ namespace LINGYUN.Abp.OssManagement
public string Bucket { get; set; } public string Bucket { get; set; }
public string Process { get; set; } public string Process { get; set; }
/// <summary>
/// 解决通过路由传递租户标识时,abp写入cookies
/// </summary>
public Guid? TenantId { get; set; }
} }
} }

2
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 GroupName = "AbpOssManagement";
/// <summary> /// <summary>
/// 是否运行未经授权的用户访问公共目录 /// 是否允许未经授权的用户访问公共目录
/// </summary> /// </summary>
public const string PublicAccess = GroupName + ".PublicAccess"; public const string PublicAccess = GroupName + ".PublicAccess";

2
aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj

@ -9,7 +9,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="SixLabors.ImageSharp.Drawing" Version="1.0.0-beta14" /> <PackageReference Include="SixLabors.ImageSharp.Drawing" Version="$(SixLaborsImageSharpDrawingPackageVersion)" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

56
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 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) public async virtual Task ProcessAsync(FileSystemOssObjectContext context)
{ {
var copyStream = context.OssObject.Content; var copyStream = context.OssObject.Content;
var bytes = await copyStream.GetAllBytesAsync(); var bytes = await copyStream.GetAllBytesAsync();
if (IsImage(bytes)) if (bytes.IsImage())
{ {
var args = context.Process.Split(','); var args = context.Process.Split(',');
if (DrawGraphics(bytes, args, out var content)) 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); using var image = Image.Load(fileBytes, out var format);
// 大小 // 大小
var width = GetInt32Prarm(args, "w_"); var width = args.GetInt32Prarm("w_");
var height = GetInt32Prarm(args, "h_"); var height = args.GetInt32Prarm("h_");
if (!width.IsNullOrWhiteSpace() && if (!width.IsNullOrWhiteSpace() &&
!height.IsNullOrWhiteSpace()) !height.IsNullOrWhiteSpace())
{ {
@ -76,47 +68,5 @@ namespace LINGYUN.Abp.OssManagement.FileSystem.ImageSharp
content = imageStream; content = imageStream;
return true; 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 _));
}
} }
} }

3
aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

12
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
{
}

19
aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.Imaging.ImageSharp.csproj

@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\configureawait.props" />
<Import Project="..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Imaging.ImageSharp" Version="$(VoloAbpPackageVersion)" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\LINGYUN.Abp.OssManagement.FileSystem.Imaging\LINGYUN.Abp.OssManagement.FileSystem.Imaging.csproj" />
</ItemGroup>
</Project>

3
aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

19
aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.Imaging/LINGYUN.Abp.OssManagement.FileSystem.Imaging.csproj

@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\configureawait.props" />
<Import Project="..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Imaging.Abstractions" Version="$(VoloAbpPackageVersion)" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\LINGYUN.Abp.OssManagement.FileSystem\LINGYUN.Abp.OssManagement.FileSystem.csproj" />
</ItemGroup>
</Project>

75
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<IImageResizer>();
var resizeResult = await imageResizer.ResizeAsync(processSreeam, resizeArgs);
if (resizeResult.State == ImageProcessState.Done)
{
processSreeam = resizeResult.Result;
}
}
if (Compress(args))
{
var imageCompressor = context.ServiceProvider.GetRequiredService<IImageCompressor>();
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");
}
}

18
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<FileSystemOssOptions>(options =>
{
options.AddProcesser(new AbpImagingProcesserContributor());
});
}
}

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

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

2
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}")] [Route("t/{TenantId}/p/{Path}/{Name}/{Process}")]
public async virtual Task<IRemoteStreamContent> GetAsync([FromRoute] GetPublicFileInput input) public async virtual Task<IRemoteStreamContent> GetAsync([FromRoute] GetPublicFileInput input)
{ {
using (CurrentTenant.Change(input.TenantId ?? CurrentTenant.Id)) using (CurrentTenant.Change(input.GetTenantId(CurrentTenant)))
{ {
return await _service.GetAsync(input); return await _service.GetAsync(input);
} }

2
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}")] [Route("t/{TenantId}/p/{Path}/{Name}/{Process}")]
public async virtual Task<IRemoteStreamContent> GetAsync([FromRoute] GetPublicFileInput input) public async virtual Task<IRemoteStreamContent> GetAsync([FromRoute] GetPublicFileInput input)
{ {
using (CurrentTenant.Change(input.TenantId ?? CurrentTenant.Id)) using (CurrentTenant.Change(input.GetTenantId(CurrentTenant)))
{ {
return await _publicFileAppService.GetAsync(input); return await _publicFileAppService.GetAsync(input);
} }

2
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}")] [Route("t/{TenantId}/{Bucket}/p/{Path}/{Name}/{Process}")]
public async virtual Task<IRemoteStreamContent> GetAsync([FromRoute] GetStaticFileInput input) public async virtual Task<IRemoteStreamContent> GetAsync([FromRoute] GetStaticFileInput input)
{ {
using (CurrentTenant.Change(input.TenantId ?? CurrentTenant.Id)) using (CurrentTenant.Change(input.GetTenantId(CurrentTenant)))
{ {
return await _staticFilesAppServic.GetAsync(input); return await _staticFilesAppServic.GetAsync(input);
} }

3
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.Aliyun](./LINGYUN.Abp.OssManagement.Aliyun) Oss管理的阿里云实现,实现了部分阿里云Oss服务的容器与对象管理
* [LINGYUN.Abp.OssManagement.FileSystem](./LINGYUN.Abp.OssManagement.FileSystem) 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.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-03-10】 变更FileManagement命名空间为OssManagement
*【2021-10-22】 增加PublicFilesController用于身份认证通过的用户上传/下载文件,所有操作限定在用户目录下 *【2021-10-22】 增加PublicFilesController用于身份认证通过的用户上传/下载文件,所有操作限定在用户目录下
*【2021-12-13】 增加LINGYUN.Abp.BlobStoring.OssManagement用于实现Oss代理二进制文件存储 *【2021-12-13】 增加LINGYUN.Abp.BlobStoring.OssManagement用于实现Oss代理二进制文件存储
*【2023-09-04】 集成Volo.Abp.Imaging模块用于图形文件流处理

40
aspnet-core/templates/content/Directory.Build.props

@ -1,33 +1,49 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<AgileConfigClientPackageVersion>1.6.9</AgileConfigClientPackageVersion> <VoloAbpPackageVersion>7.3.2</VoloAbpPackageVersion>
<VoloAbpPackageVersion>7.2.2</VoloAbpPackageVersion> <VoloAbpLeptonXThemePackageVersion>2.3.2</VoloAbpLeptonXThemePackageVersion>
<LINGYUNAbpPackageVersion>7.2.2</LINGYUNAbpPackageVersion> <LINGYUNAbpPackageVersion>7.3.2</LINGYUNAbpPackageVersion>
<DotNetCoreCAPPackageVersion>7.1.0</DotNetCoreCAPPackageVersion> <DaprPackageVersion>1.11.0</DaprPackageVersion>
<DaprPackageVersion>1.10.0</DaprPackageVersion>
<DistributedLockRedisPackageVersion>1.0.2</DistributedLockRedisPackageVersion> <DistributedLockRedisPackageVersion>1.0.2</DistributedLockRedisPackageVersion>
<DotNetCoreCAPPackageVersion>7.2.0</DotNetCoreCAPPackageVersion>
<ElsaPackageVersion>2.11.0</ElsaPackageVersion>
<AliyunSDKPackageVersion>1.5.10</AliyunSDKPackageVersion>
<AliyunOSSSDKPackageVersion>2.13.0</AliyunOSSSDKPackageVersion>
<TencentCloudSDKPackageVersion>3.0.712</TencentCloudSDKPackageVersion>
<AgileConfigClientPackageVersion>1.6.9</AgileConfigClientPackageVersion>
<HangfireMySqlStoragePackageVersion>2.0.3</HangfireMySqlStoragePackageVersion>
<HangfireMSSQLStoragePackageVersion>1.8.2</HangfireMSSQLStoragePackageVersion>
<NESTPackageVersion>7.15.1</NESTPackageVersion>
<NewtonsoftJsonPackageVersion>13.0.1</NewtonsoftJsonPackageVersion>
<OpenTelemetryExtensionsHostingPackageVersion>1.0.0-rc8</OpenTelemetryExtensionsHostingPackageVersion> <OpenTelemetryExtensionsHostingPackageVersion>1.0.0-rc8</OpenTelemetryExtensionsHostingPackageVersion>
<OpenTelemetryExporterZipkinPackageVersion>1.3.1</OpenTelemetryExporterZipkinPackageVersion> <OpenTelemetryExporterZipkinPackageVersion>1.3.1</OpenTelemetryExporterZipkinPackageVersion>
<OpenTelemetryInstrumentationAspNetCorePackageVersion>1.0.0-rc8</OpenTelemetryInstrumentationAspNetCorePackageVersion> <OpenTelemetryInstrumentationAspNetCorePackageVersion>1.0.0-rc8</OpenTelemetryInstrumentationAspNetCorePackageVersion>
<OpenTelemetryInstrumentationHttpPackageVersion>1.0.0-rc8</OpenTelemetryInstrumentationHttpPackageVersion> <OpenTelemetryInstrumentationHttpPackageVersion>1.0.0-rc8</OpenTelemetryInstrumentationHttpPackageVersion>
<OpenTelemetryContribInstrumentationEntityFrameworkCorePackageVersion>1.0.0-beta2</OpenTelemetryContribInstrumentationEntityFrameworkCorePackageVersion> <OpenTelemetryContribInstrumentationEntityFrameworkCorePackageVersion>1.0.0-beta2</OpenTelemetryContribInstrumentationEntityFrameworkCorePackageVersion>
<SerilogPackageVersion>2.10.0</SerilogPackageVersion> <QuartzNETPackageVersion>3.3.3</QuartzNETPackageVersion>
<SerilogSinksAsyncPackageVersion>1.5.0</SerilogSinksAsyncPackageVersion> <StackExchangeRedisPackageVersion>2.2.4</StackExchangeRedisPackageVersion>
<SerilogAspNetCorePackageVersion>5.0.0</SerilogAspNetCorePackageVersion> <SerilogPackageVersion>2.12.0</SerilogPackageVersion>
<SerilogAspNetCorePackageVersion>7.0.0</SerilogAspNetCorePackageVersion>
<SerilogEnrichersEnvironmentPackageVersion>2.2.0</SerilogEnrichersEnvironmentPackageVersion> <SerilogEnrichersEnvironmentPackageVersion>2.2.0</SerilogEnrichersEnvironmentPackageVersion>
<SerilogEnrichersAssemblyPackageVersion>2.0.0</SerilogEnrichersAssemblyPackageVersion> <SerilogEnrichersAssemblyPackageVersion>2.0.0</SerilogEnrichersAssemblyPackageVersion>
<SerilogEnrichersProcessPackageVersion>2.0.1</SerilogEnrichersProcessPackageVersion> <SerilogEnrichersProcessPackageVersion>2.0.2</SerilogEnrichersProcessPackageVersion>
<SerilogEnrichersThreadPackageVersion>3.1.0</SerilogEnrichersThreadPackageVersion> <SerilogEnrichersThreadPackageVersion>3.1.0</SerilogEnrichersThreadPackageVersion>
<SerilogExtensionsLoggingPackageVersion>3.0.1</SerilogExtensionsLoggingPackageVersion> <SerilogExtensionsLoggingPackageVersion>3.0.1</SerilogExtensionsLoggingPackageVersion>
<SerilogSettingsConfigurationPackageVersion>3.4.0</SerilogSettingsConfigurationPackageVersion> <SerilogSettingsConfigurationPackageVersion>7.0.1</SerilogSettingsConfigurationPackageVersion>
<SerilogSinksConsolePackageVersion>4.0.0</SerilogSinksConsolePackageVersion> <SerilogSinksConsolePackageVersion>4.0.0</SerilogSinksConsolePackageVersion>
<SerilogSinksElasticsearchPackageVersion>8.4.1</SerilogSinksElasticsearchPackageVersion> <SerilogSinksElasticsearchPackageVersion>9.0.3</SerilogSinksElasticsearchPackageVersion>
<SerilogSinksFilePackageVersion>5.0.0</SerilogSinksFilePackageVersion> <SerilogSinksFilePackageVersion>5.0.0</SerilogSinksFilePackageVersion>
<SwashbuckleAspNetCorePackageVersion>6.1.5</SwashbuckleAspNetCorePackageVersion> <SwashbuckleAspNetCorePackageVersion>6.3.0</SwashbuckleAspNetCorePackageVersion>
<PollyPackageVersion>7.2.3</PollyPackageVersion>
<MicrosoftPackageVersion>7.0.*</MicrosoftPackageVersion> <MicrosoftPackageVersion>7.0.*</MicrosoftPackageVersion>
<MicrosoftEntityFrameworkCorePackageVersion>7.0.2</MicrosoftEntityFrameworkCorePackageVersion> <MicrosoftEntityFrameworkCorePackageVersion>7.0.2</MicrosoftEntityFrameworkCorePackageVersion>
<XunitTestPackageVersion>2.4.1</XunitTestPackageVersion> <XunitTestPackageVersion>2.4.1</XunitTestPackageVersion>
<ShouldlyPackageVersion>3.0.2</ShouldlyPackageVersion> <ShouldlyPackageVersion>3.0.2</ShouldlyPackageVersion>
<NSubstitutePackageVersion>4.2.1</NSubstitutePackageVersion> <NSubstitutePackageVersion>4.2.1</NSubstitutePackageVersion>
<MicrosoftNETTestSdkPackageVersion>17.3.2</MicrosoftNETTestSdkPackageVersion>
<XunitPackageVersion>2.5.0</XunitPackageVersion>
<CoverletCollectorPackageVersion>3.0.2</CoverletCollectorPackageVersion>
<NSubstitutePackageVersion>4.2.1</NSubstitutePackageVersion>
<ShouldlyPackageVersion>3.0.2</ShouldlyPackageVersion>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

1
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 common.props = common.props
configureawait.props = configureawait.props configureawait.props = configureawait.props
Directory.Build.props = Directory.Build.props Directory.Build.props = Directory.Build.props
..\..\NuGet.Config = ..\..\NuGet.Config
EndProjectSection EndProjectSection
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{4786387C-C1C5-46F8-806F-EBC54DB0A4FA}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{4786387C-C1C5-46F8-806F-EBC54DB0A4FA}"

1
aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/PackageName.CompanyName.ProjectName.DbMigrator.csproj

@ -11,7 +11,6 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Serilog.Sinks.Async" Version="$(SerilogSinksAsyncPackageVersion)" />
<PackageReference Include="Serilog.Extensions.Logging" Version="$(SerilogExtensionsLoggingPackageVersion)" /> <PackageReference Include="Serilog.Extensions.Logging" Version="$(SerilogExtensionsLoggingPackageVersion)" />
<PackageReference Include="Serilog.Sinks.File" Version="$(SerilogSinksFilePackageVersion)" /> <PackageReference Include="Serilog.Sinks.File" Version="$(SerilogSinksFilePackageVersion)" />
<PackageReference Include="Serilog.Sinks.Console" Version="$(SerilogSinksConsolePackageVersion)" /> <PackageReference Include="Serilog.Sinks.Console" Version="$(SerilogSinksConsolePackageVersion)" />

4
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) .MinimumLevel.Override("PackageName.CompanyName.ProjectName", LogEventLevel.Information)
#endif #endif
.Enrich.FromLogContext() .Enrich.FromLogContext()
.WriteTo.Async(c => c.File("Logs/logs.txt")) .WriteTo.File("Logs/logs.txt")
.WriteTo.Async(c => c.Console()) .WriteTo.Console()
.CreateLogger(); .CreateLogger();
await CreateHostBuilder(args).RunConsoleAsync(); await CreateHostBuilder(args).RunConsoleAsync();

Loading…
Cancel
Save