Browse Source

feat(oss): 增加oss存储是否存在接口

pull/1192/head
colin 9 months ago
parent
commit
423c881fd6
  1. 13
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AliyunOssContainer.cs
  2. 6
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainer.cs
  3. 2
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssContainerBase.cs
  4. 16
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainer.cs
  5. 46
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/OssObjectController.cs
  6. 14
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Minio/LINGYUN/Abp/OssManagement/Minio/MinioOssContainer.cs
  7. 16
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Nexus/LINGYUN/Abp/OssManagement/Nexus/NexusOssContainer.cs
  8. 13
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Tencent/LINGYUN/Abp/OssManagement/Tencent/TencentOssContainer.cs

13
aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AliyunOssContainer.cs

@ -62,6 +62,19 @@ internal class AliyunOssContainer : OssContainerBase, IOssObjectExpireor
});
}
public async override Task<bool> ObjectExistsAsync(GetOssObjectRequest request)
{
var ossClient = await CreateClientAsync();
var objectPath = GetBasePath(request.Path);
var objectName = objectPath.IsNullOrWhiteSpace()
? request.Object
: objectPath + request.Object;
return ObjectExists(ossClient, request.Bucket, objectName);
}
public async override Task<OssObject> CreateObjectAsync(CreateOssObjectRequest request)
{
var ossClient = await CreateClientAsync();

6
aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainer.cs

@ -60,6 +60,12 @@ public interface IOssContainer
/// <returns></returns>
Task<bool> ExistsAsync(string name);
/// <summary>
/// Oss对象是否存在
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
Task<bool> ObjectExistsAsync(GetOssObjectRequest request);
/// <summary>
/// 获取容器列表
/// </summary>
/// <param name="request"></param>

2
aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssContainerBase.cs

@ -65,4 +65,6 @@ public abstract class OssContainerBase : IOssContainer
{
return true;
}
public abstract Task<bool> ObjectExistsAsync(GetOssObjectRequest request);
}

16
aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainer.cs

@ -122,6 +122,22 @@ internal class FileSystemOssContainer : OssContainerBase, IOssObjectExpireor
return Task.CompletedTask;
}
public override Task<bool> ObjectExistsAsync(GetOssObjectRequest request)
{
var objectPath = !request.Path.IsNullOrWhiteSpace()
? request.Path.EnsureEndsWith('/')
: "";
var objectName = objectPath.IsNullOrWhiteSpace()
? request.Object
: objectPath + request.Object;
var filePath = CalculateFilePath(request.Bucket, objectName);
var objectExists = File.Exists(filePath) || Directory.Exists(filePath);
return Task.FromResult(objectExists);
}
public async override Task<OssObject> CreateObjectAsync(CreateOssObjectRequest request)
{
var objectPath = !request.Path.IsNullOrWhiteSpace()

46
aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/OssObjectController.cs

@ -1,6 +1,7 @@
using LINGYUN.Abp.OssManagement.Permissions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc;
@ -26,43 +27,64 @@ public class OssObjectController : AbpControllerBase, IOssObjectAppService
}
[HttpPost]
public async virtual Task<OssObjectDto> CreateAsync([FromForm] CreateOssObjectInput input)
[Authorize(AbpOssManagementPermissions.OssObject.Create)]
public virtual Task<OssObjectDto> CreateAsync([FromForm] CreateOssObjectInput input)
{
return await OssObjectAppService.CreateAsync(input);
return OssObjectAppService.CreateAsync(input);
}
[HttpPost]
[Route("upload")]
[DisableAuditing]
[Authorize(AbpOssManagementPermissions.OssObject.Create)]
public async virtual Task UploadAsync([FromForm] UploadFileChunkInput input)
public virtual Task UploadAsync([FromForm] UploadFileChunkInput input)
{
await FileUploader.UploadAsync(input);
return FileUploader.UploadAsync(input);
}
[HttpPost]
[Route("bulk-delete")]
public async virtual Task BulkDeleteAsync(BulkDeleteOssObjectInput input)
[Authorize(AbpOssManagementPermissions.OssObject.Delete)]
public virtual Task BulkDeleteAsync(BulkDeleteOssObjectInput input)
{
await OssObjectAppService.BulkDeleteAsync(input);
return OssObjectAppService.BulkDeleteAsync(input);
}
[HttpDelete]
public async virtual Task DeleteAsync(GetOssObjectInput input)
[Authorize(AbpOssManagementPermissions.OssObject.Delete)]
public virtual Task DeleteAsync(GetOssObjectInput input)
{
await OssObjectAppService.DeleteAsync(input);
return OssObjectAppService.DeleteAsync(input);
}
[HttpGet]
public async virtual Task<OssObjectDto> GetAsync(GetOssObjectInput input)
[Authorize(AbpOssManagementPermissions.OssObject.Default)]
public virtual Task<OssObjectDto> GetAsync(GetOssObjectInput input)
{
return await OssObjectAppService.GetAsync(input);
return OssObjectAppService.GetAsync(input);
}
[HttpGet]
[Route("download")]
public async virtual Task<IRemoteStreamContent> GetContentAsync(GetOssObjectInput input)
[Authorize(AbpOssManagementPermissions.OssObject.Download)]
[Obsolete("请使用 GenerateUrlAsync 与 DownloadAsync的组合")]
public virtual Task<IRemoteStreamContent> GetContentAsync(GetOssObjectInput input)
{
return OssObjectAppService.GetContentAsync(input);
}
[HttpGet]
[Route("generate-url")]
[Authorize(AbpOssManagementPermissions.OssObject.Download)]
public virtual Task<string> GenerateUrlAsync(GetOssObjectInput input)
{
return OssObjectAppService.GenerateUrlAsync(input);
}
[HttpGet]
[Route("download/{urlKey}")]
public virtual Task<IRemoteStreamContent> DownloadAsync(string urlKey)
{
return await OssObjectAppService.GetContentAsync(input);
return OssObjectAppService.DownloadAsync(urlKey);
}
}

14
aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Minio/LINGYUN/Abp/OssManagement/Minio/MinioOssContainer.cs

@ -95,6 +95,20 @@ public class MinioOssContainer : OssContainerBase, IOssObjectExpireor
new Dictionary<string, string>());
}
public async override Task<bool> ObjectExistsAsync(GetOssObjectRequest request)
{
var client = GetMinioClient();
var bucket = GetBucket(request.Bucket);
var prefixPath = GetPrefixPath();
var objectPath = GetBlobPath(prefixPath, request.Path);
var objectName = objectPath.IsNullOrWhiteSpace()
? request.Object
: objectPath + request.Object;
return await ObjectExists(client, bucket, objectName);
}
public async override Task<OssObject> CreateObjectAsync(CreateOssObjectRequest request)
{
var client = GetMinioClient();

16
aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Nexus/LINGYUN/Abp/OssManagement/Nexus/NexusOssContainer.cs

@ -77,6 +77,22 @@ internal class NexusOssContainer : OssContainerBase, IOssObjectExpireor
DateTime.Now);
}
public async override Task<bool> ObjectExistsAsync(GetOssObjectRequest request)
{
var nexusConfiguration = GetNexusConfiguration();
var blobPath = GetBasePath(request.Bucket, request.Path, request.Object);
var searchBlobName = GetObjectName(request.Bucket, request.Path, request.Object);
var nexusSearchArgs = new NexusSearchArgs(
nexusConfiguration.Repository,
blobPath,
searchBlobName);
var nexusAssetListResult = await NexusLookupService.ListAssetAsync(nexusSearchArgs);
return nexusAssetListResult.Items.Count != 0;
}
public async override Task<OssObject> CreateObjectAsync(CreateOssObjectRequest request)
{
var nexusConfiguration = GetNexusConfiguration();

13
aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Tencent/LINGYUN/Abp/OssManagement/Tencent/TencentOssContainer.cs

@ -71,6 +71,19 @@ internal class TencentOssContainer : OssContainerBase, IOssObjectExpireor
});
}
public async override Task<bool> ObjectExistsAsync(GetOssObjectRequest request)
{
var ossClient = await CreateClientAsync();
var objectPath = GetBasePath(request.Path);
var objectName = objectPath.IsNullOrWhiteSpace()
? request.Object
: objectPath + request.Object;
return ObjectExists(ossClient, request.Bucket, objectName);
}
public async override Task<OssObject> CreateObjectAsync(CreateOssObjectRequest request)
{
var ossClient = await CreateClientAsync();

Loading…
Cancel
Save