diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssObjectInput.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssObjectInput.cs index ff3ccbafa..f9c92ebbf 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssObjectInput.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssObjectInput.cs @@ -11,5 +11,6 @@ public class GetOssObjectInput [Required] public string Object { get; set; } + public bool MD5 { get; set; } } diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/ValidationOssObjectInput.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/ValidationOssObjectInput.cs new file mode 100644 index 000000000..235bc2841 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/ValidationOssObjectInput.cs @@ -0,0 +1,28 @@ +using System.ComponentModel.DataAnnotations; + +namespace LINGYUN.Abp.OssManagement; + +public class ValidationOssObjectInput +{ + /// + /// 总文件大小 + /// + [Required] + public long TotalSize { get; set; } + /// + /// 文件名 + /// + [Required] + public string FileName { get; set; } + /// + /// 容器 + /// + [Required] + public string Bucket { get; set; } + /// + /// 路径 + /// + public string Path { get; set; } + + public bool Overwrite { get; set; } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/FileUploadMerger.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/FileUploadMerger.cs index ec0aff509..fdefe79a5 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/FileUploadMerger.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/FileUploadMerger.cs @@ -4,8 +4,8 @@ using LINGYUN.Abp.OssManagement.Localization; using Microsoft.Extensions.Localization; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using System.IO; using System.Threading.Tasks; +using Volo.Abp; using Volo.Abp.DependencyInjection; using Volo.Abp.Features; using Volo.Abp.Validation; @@ -65,6 +65,25 @@ public class FileUploadMerger : ITransientDependency return await oss.CreateObjectAsync(createOssObjectRequest); } + public async virtual Task ValidationAsync(ValidationOssObjectInput input) + { + await _fileValidater.ValidationAsync(new UploadFile + { + TotalSize = input.TotalSize, + FileName = input.FileName + }); + + var oss = CreateOssContainer(); + + if (!input.Overwrite && await oss.ObjectExistsAsync(new GetOssObjectRequest( + input.Bucket, + input.FileName, + input.Path))) + { + throw new BusinessException(OssManagementErrorCodes.ObjectAlreadyExists); + } + } + protected virtual IOssContainer CreateOssContainer() { return _ossContainerFactory.Create(); diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/FileUploader.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/FileUploader.cs index 442f81690..93af01a04 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/FileUploader.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/FileUploader.cs @@ -10,20 +10,22 @@ namespace LINGYUN.Abp.OssManagement; public class FileUploader : IFileUploader, ITransientDependency { - private readonly IFileValidater _fileValidater; private readonly FileUploadMerger _fileUploadMerger; - public FileUploader( - IFileValidater fileValidater, - FileUploadMerger fileUploadMerger) + public FileUploader(FileUploadMerger fileUploadMerger) { - _fileValidater = fileValidater; _fileUploadMerger = fileUploadMerger; } public async virtual Task UploadAsync(UploadFileChunkInput input, CancellationToken cancellationToken = default) { - await _fileValidater.ValidationAsync(input); + await _fileUploadMerger.ValidationAsync(new ValidationOssObjectInput + { + TotalSize = input.TotalSize, + FileName = input.FileName, + Bucket = input.Bucket, + Path = input.Path, + }); // 以上传的文件名创建一个临时目录 var tempFilePath = Path.Combine( Path.GetTempPath(),