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>
<SerilogSinksConsolePackageVersion>4.0.0</SerilogSinksConsolePackageVersion>
<SerilogSinksElasticsearchPackageVersion>9.0.3</SerilogSinksElasticsearchPackageVersion>
<SixLaborsImageSharpDrawingPackageVersion>1.0.0</SixLaborsImageSharpDrawingPackageVersion>
<SerilogSinksFilePackageVersion>5.0.0</SerilogSinksFilePackageVersion>
<SwashbuckleAspNetCorePackageVersion>6.3.0</SwashbuckleAspNetCorePackageVersion>
<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
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}

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>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<Version>7.2.1</Version>
<Version>7.3.2</Version>
<Copyright>colin</Copyright>
<Description>Use LINGYUN.MicroService.Templates command line</Description>
<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
{
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; }
/// <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
{
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; }
/// <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";
/// <summary>
/// 是否运行未经授权的用户访问公共目录
/// 是否允许未经授权的用户访问公共目录
/// </summary>
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>
<ItemGroup>
<PackageReference Include="SixLabors.ImageSharp.Drawing" Version="1.0.0-beta14" />
<PackageReference Include="SixLabors.ImageSharp.Drawing" Version="$(SixLaborsImageSharpDrawingPackageVersion)" />
</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
{
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 _));
}
}
}

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

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

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

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.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模块用于图形文件流处理

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

@ -1,33 +1,49 @@
<Project>
<PropertyGroup>
<AgileConfigClientPackageVersion>1.6.9</AgileConfigClientPackageVersion>
<VoloAbpPackageVersion>7.2.2</VoloAbpPackageVersion>
<LINGYUNAbpPackageVersion>7.2.2</LINGYUNAbpPackageVersion>
<DotNetCoreCAPPackageVersion>7.1.0</DotNetCoreCAPPackageVersion>
<DaprPackageVersion>1.10.0</DaprPackageVersion>
<VoloAbpPackageVersion>7.3.2</VoloAbpPackageVersion>
<VoloAbpLeptonXThemePackageVersion>2.3.2</VoloAbpLeptonXThemePackageVersion>
<LINGYUNAbpPackageVersion>7.3.2</LINGYUNAbpPackageVersion>
<DaprPackageVersion>1.11.0</DaprPackageVersion>
<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>
<OpenTelemetryExporterZipkinPackageVersion>1.3.1</OpenTelemetryExporterZipkinPackageVersion>
<OpenTelemetryInstrumentationAspNetCorePackageVersion>1.0.0-rc8</OpenTelemetryInstrumentationAspNetCorePackageVersion>
<OpenTelemetryInstrumentationHttpPackageVersion>1.0.0-rc8</OpenTelemetryInstrumentationHttpPackageVersion>
<OpenTelemetryContribInstrumentationEntityFrameworkCorePackageVersion>1.0.0-beta2</OpenTelemetryContribInstrumentationEntityFrameworkCorePackageVersion>
<SerilogPackageVersion>2.10.0</SerilogPackageVersion>
<SerilogSinksAsyncPackageVersion>1.5.0</SerilogSinksAsyncPackageVersion>
<SerilogAspNetCorePackageVersion>5.0.0</SerilogAspNetCorePackageVersion>
<QuartzNETPackageVersion>3.3.3</QuartzNETPackageVersion>
<StackExchangeRedisPackageVersion>2.2.4</StackExchangeRedisPackageVersion>
<SerilogPackageVersion>2.12.0</SerilogPackageVersion>
<SerilogAspNetCorePackageVersion>7.0.0</SerilogAspNetCorePackageVersion>
<SerilogEnrichersEnvironmentPackageVersion>2.2.0</SerilogEnrichersEnvironmentPackageVersion>
<SerilogEnrichersAssemblyPackageVersion>2.0.0</SerilogEnrichersAssemblyPackageVersion>
<SerilogEnrichersProcessPackageVersion>2.0.1</SerilogEnrichersProcessPackageVersion>
<SerilogEnrichersProcessPackageVersion>2.0.2</SerilogEnrichersProcessPackageVersion>
<SerilogEnrichersThreadPackageVersion>3.1.0</SerilogEnrichersThreadPackageVersion>
<SerilogExtensionsLoggingPackageVersion>3.0.1</SerilogExtensionsLoggingPackageVersion>
<SerilogSettingsConfigurationPackageVersion>3.4.0</SerilogSettingsConfigurationPackageVersion>
<SerilogSettingsConfigurationPackageVersion>7.0.1</SerilogSettingsConfigurationPackageVersion>
<SerilogSinksConsolePackageVersion>4.0.0</SerilogSinksConsolePackageVersion>
<SerilogSinksElasticsearchPackageVersion>8.4.1</SerilogSinksElasticsearchPackageVersion>
<SerilogSinksElasticsearchPackageVersion>9.0.3</SerilogSinksElasticsearchPackageVersion>
<SerilogSinksFilePackageVersion>5.0.0</SerilogSinksFilePackageVersion>
<SwashbuckleAspNetCorePackageVersion>6.1.5</SwashbuckleAspNetCorePackageVersion>
<SwashbuckleAspNetCorePackageVersion>6.3.0</SwashbuckleAspNetCorePackageVersion>
<PollyPackageVersion>7.2.3</PollyPackageVersion>
<MicrosoftPackageVersion>7.0.*</MicrosoftPackageVersion>
<MicrosoftEntityFrameworkCorePackageVersion>7.0.2</MicrosoftEntityFrameworkCorePackageVersion>
<XunitTestPackageVersion>2.4.1</XunitTestPackageVersion>
<ShouldlyPackageVersion>3.0.2</ShouldlyPackageVersion>
<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>
</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
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}"

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

@ -11,7 +11,6 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Serilog.Sinks.Async" Version="$(SerilogSinksAsyncPackageVersion)" />
<PackageReference Include="Serilog.Extensions.Logging" Version="$(SerilogExtensionsLoggingPackageVersion)" />
<PackageReference Include="Serilog.Sinks.File" Version="$(SerilogSinksFilePackageVersion)" />
<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)
#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();

Loading…
Cancel
Save