李宏 2 years ago
parent
commit
c38450a335
  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. 9
      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; }
}
}

9
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