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