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(),