37 lines
1.1 KiB
C#
37 lines
1.1 KiB
C#
using System.Threading;
|
||
using System.Threading.Tasks;
|
||
using TakeoutSaaS.Module.Storage.Models;
|
||
|
||
namespace TakeoutSaaS.Module.Storage.Abstractions;
|
||
|
||
/// <summary>
|
||
/// 对象存储提供商统一抽象。
|
||
/// </summary>
|
||
public interface IObjectStorageProvider
|
||
{
|
||
/// <summary>
|
||
/// 当前提供商类型。
|
||
/// </summary>
|
||
StorageProviderKind Kind { get; }
|
||
|
||
/// <summary>
|
||
/// 上传文件到对象存储。
|
||
/// </summary>
|
||
Task<StorageUploadResult> UploadAsync(StorageUploadRequest request, CancellationToken cancellationToken = default);
|
||
|
||
/// <summary>
|
||
/// 生成预签名直传参数(PUT 或表单直传)。
|
||
/// </summary>
|
||
Task<StorageDirectUploadResult> CreateDirectUploadAsync(StorageDirectUploadRequest request, CancellationToken cancellationToken = default);
|
||
|
||
/// <summary>
|
||
/// 生成带过期时间的访问链接。
|
||
/// </summary>
|
||
Task<string> GenerateDownloadUrlAsync(string objectKey, TimeSpan expires, CancellationToken cancellationToken = default);
|
||
|
||
/// <summary>
|
||
/// 生成公共访问地址(可结合 CDN)。
|
||
/// </summary>
|
||
string BuildPublicUrl(string objectKey);
|
||
}
|