From 6fc109215b127a13e11cf4f8f89028e9f1599849 Mon Sep 17 00:00:00 2001 From: cKey <35512826+colinin@users.noreply.github.com> Date: Wed, 13 Oct 2021 16:08:59 +0800 Subject: [PATCH] fix(oss): the upload file size parameter should be of type long --- .../Settings/AbpOssManagementSettingNames.cs | 44 ++-- .../Abp/OssManagement/FileValidater.cs | 192 +++++++++--------- .../Abp/OssManagement/UploadOssObjectInput.cs | 94 ++++----- 3 files changed, 165 insertions(+), 165 deletions(-) diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingNames.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingNames.cs index 89fa80d47..41f5332cc 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingNames.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingNames.cs @@ -1,22 +1,22 @@ -namespace LINGYUN.Abp.OssManagement.Settings -{ - public class AbpOssManagementSettingNames - { - public const string GroupName = "Abp.OssManagement"; - /// - /// 下载分包大小 - /// - public const string DownloadPackageSize = GroupName + ".DownloadPackageSize"; - /// - /// 文件限制长度 - /// - public const string FileLimitLength = GroupName + ".FileLimitLength"; - /// - /// 允许的文件扩展名类型 - /// - public const string AllowFileExtensions = GroupName + ".AllowFileExtensions"; - - public const int DefaultFileLimitLength = 100; - public const string DefaultAllowFileExtensions = "dll,zip,rar,txt,log,xml,config,json,jpeg,jpg,png,bmp,ico,xlsx,xltx,xls,xlt,docs,dots,doc,dot,pptx,potx,ppt,pot,chm"; - } -} +namespace LINGYUN.Abp.OssManagement.Settings +{ + public class AbpOssManagementSettingNames + { + public const string GroupName = "Abp.OssManagement"; + /// + /// 下载分包大小 + /// + public const string DownloadPackageSize = GroupName + ".DownloadPackageSize"; + /// + /// 文件限制长度 + /// + public const string FileLimitLength = GroupName + ".FileLimitLength"; + /// + /// 允许的文件扩展名类型 + /// + public const string AllowFileExtensions = GroupName + ".AllowFileExtensions"; + + public const long DefaultFileLimitLength = 100L; + public const string DefaultAllowFileExtensions = "dll,zip,rar,txt,log,xml,config,json,jpeg,jpg,png,bmp,ico,xlsx,xltx,xls,xlt,docs,dots,doc,dot,pptx,potx,ppt,pot,chm"; + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/FileValidater.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/FileValidater.cs index 4e3cccc16..746249392 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/FileValidater.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/FileValidater.cs @@ -1,96 +1,96 @@ -using LINGYUN.Abp.OssManagement.Localization; -using LINGYUN.Abp.OssManagement.Settings; -using Microsoft.Extensions.Caching.Memory; -using Microsoft.Extensions.Localization; -using System; -using System.Linq; -using System.Threading.Tasks; -using Volo.Abp; -using Volo.Abp.DependencyInjection; -using Volo.Abp.IO; -using Volo.Abp.Settings; - -namespace LINGYUN.Abp.OssManagement -{ - public class FileValidater : IFileValidater, ISingletonDependency - { - private readonly IMemoryCache _cache; - private readonly ISettingProvider _settingProvider; - private readonly IServiceProvider _serviceProvider; - private readonly IStringLocalizer _stringLocalizer; - - public FileValidater( - IMemoryCache cache, - ISettingProvider settingProvider, - IServiceProvider serviceProvider, - IStringLocalizer stringLocalizer) - { - _cache = cache; - _settingProvider = settingProvider; - _serviceProvider = serviceProvider; - _stringLocalizer = stringLocalizer; - } - - public virtual async Task ValidationAsync(UploadOssObjectInput input) - { - var validation = await GetByCacheItemAsync(); - if (validation.SizeLimit * 1024 * 1024 < input.TotalSize) - { - throw new UserFriendlyException(_stringLocalizer["UploadFileSizeBeyondLimit", validation.SizeLimit]); - } - var fileExtensionName = FileHelper.GetExtension(input.FileName); - if (!validation.AllowedExtensions - .Any(fe => fe.Equals(fileExtensionName, StringComparison.CurrentCultureIgnoreCase))) - { - throw new UserFriendlyException(_stringLocalizer["NotAllowedFileExtensionName", fileExtensionName]); - } - } - - protected virtual async Task GetByCacheItemAsync() - { - var fileValidation = _cache.Get(FileValidation.CacheKey); - if (fileValidation == null) - { - fileValidation = await GetBySettingAsync(); - _cache.Set(FileValidation.CacheKey, - fileValidation, - new MemoryCacheEntryOptions - { - AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(2) - }); - } - return fileValidation; - } - - protected virtual async Task GetBySettingAsync() - { - var fileSizeLimited = await _settingProvider - .GetAsync( - AbpOssManagementSettingNames.FileLimitLength, - AbpOssManagementSettingNames.DefaultFileLimitLength); - var fileAllowExtension = await _settingProvider - .GetOrDefaultAsync(AbpOssManagementSettingNames.AllowFileExtensions, _serviceProvider); - - return new FileValidation(fileSizeLimited, fileAllowExtension.Split(',')); - } - } - - public class FileValidation - { - public const string CacheKey = "Abp.OssManagement.FileValidation"; - public int SizeLimit { get; set; } - public string[] AllowedExtensions { get; set; } - public FileValidation() - { - - } - - public FileValidation( - int sizeLimit, - string[] allowedExtensions) - { - SizeLimit = sizeLimit; - AllowedExtensions = allowedExtensions; - } - } -} +using LINGYUN.Abp.OssManagement.Localization; +using LINGYUN.Abp.OssManagement.Settings; +using Microsoft.Extensions.Caching.Memory; +using Microsoft.Extensions.Localization; +using System; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.DependencyInjection; +using Volo.Abp.IO; +using Volo.Abp.Settings; + +namespace LINGYUN.Abp.OssManagement +{ + public class FileValidater : IFileValidater, ISingletonDependency + { + private readonly IMemoryCache _cache; + private readonly ISettingProvider _settingProvider; + private readonly IServiceProvider _serviceProvider; + private readonly IStringLocalizer _stringLocalizer; + + public FileValidater( + IMemoryCache cache, + ISettingProvider settingProvider, + IServiceProvider serviceProvider, + IStringLocalizer stringLocalizer) + { + _cache = cache; + _settingProvider = settingProvider; + _serviceProvider = serviceProvider; + _stringLocalizer = stringLocalizer; + } + + public virtual async Task ValidationAsync(UploadOssObjectInput input) + { + var validation = await GetByCacheItemAsync(); + if (validation.SizeLimit * 1024 * 1024 < input.TotalSize) + { + throw new UserFriendlyException(_stringLocalizer["UploadFileSizeBeyondLimit", validation.SizeLimit]); + } + var fileExtensionName = FileHelper.GetExtension(input.FileName); + if (!validation.AllowedExtensions + .Any(fe => fe.Equals(fileExtensionName, StringComparison.CurrentCultureIgnoreCase))) + { + throw new UserFriendlyException(_stringLocalizer["NotAllowedFileExtensionName", fileExtensionName]); + } + } + + protected virtual async Task GetByCacheItemAsync() + { + var fileValidation = _cache.Get(FileValidation.CacheKey); + if (fileValidation == null) + { + fileValidation = await GetBySettingAsync(); + _cache.Set(FileValidation.CacheKey, + fileValidation, + new MemoryCacheEntryOptions + { + AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(2) + }); + } + return fileValidation; + } + + protected virtual async Task GetBySettingAsync() + { + var fileSizeLimited = await _settingProvider + .GetAsync( + AbpOssManagementSettingNames.FileLimitLength, + AbpOssManagementSettingNames.DefaultFileLimitLength); + var fileAllowExtension = await _settingProvider + .GetOrDefaultAsync(AbpOssManagementSettingNames.AllowFileExtensions, _serviceProvider); + + return new FileValidation(fileSizeLimited, fileAllowExtension.Split(',')); + } + } + + public class FileValidation + { + public const string CacheKey = "Abp.OssManagement.FileValidation"; + public long SizeLimit { get; set; } + public string[] AllowedExtensions { get; set; } + public FileValidation() + { + + } + + public FileValidation( + long sizeLimit, + string[] allowedExtensions) + { + SizeLimit = sizeLimit; + AllowedExtensions = allowedExtensions; + } + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/UploadOssObjectInput.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/UploadOssObjectInput.cs index 711eca7be..2341a35ab 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/UploadOssObjectInput.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/UploadOssObjectInput.cs @@ -1,47 +1,47 @@ -using Microsoft.AspNetCore.Http; -using System.ComponentModel.DataAnnotations; - -namespace LINGYUN.Abp.OssManagement -{ - public class UploadOssObjectInput - { - public string Bucket { get; set; } - public string Path { get; set; } - - #region 配合Uplaoder 分块传输 - /// - /// 文件名 - /// - [Required] - public string FileName { get; set; } - /// - /// 常规块大小 - /// - [Required] - public int ChunkSize { get; set; } - /// - /// 当前块大小 - /// - [Required] - public int CurrentChunkSize { get; set; } - /// - /// 当前上传中块的索引 - /// - [Required] - public int ChunkNumber { get; set; } - /// - /// 块总数 - /// - [Required] - public int TotalChunks { get; set; } - /// - /// 总文件大小 - /// - [Required] - public int TotalSize { get; set; } - - #endregion - - public IFormFile File { get; set; } - } -} +using Microsoft.AspNetCore.Http; +using System.ComponentModel.DataAnnotations; + +namespace LINGYUN.Abp.OssManagement +{ + public class UploadOssObjectInput + { + public string Bucket { get; set; } + public string Path { get; set; } + + #region 配合Uplaoder 分块传输 + /// + /// 文件名 + /// + [Required] + public string FileName { get; set; } + /// + /// 常规块大小 + /// + [Required] + public long ChunkSize { get; set; } + /// + /// 当前块大小 + /// + [Required] + public long CurrentChunkSize { get; set; } + /// + /// 当前上传中块的索引 + /// + [Required] + public int ChunkNumber { get; set; } + /// + /// 块总数 + /// + [Required] + public int TotalChunks { get; set; } + /// + /// 总文件大小 + /// + [Required] + public long TotalSize { get; set; } + + #endregion + + public IFormFile File { get; set; } + } +}