using FileService.Application.StorageContracts; using FileService.Domain.ValueObjects; namespace FileService.Application.Ports { public interface IObjectStoragePort { string ProviderCode { get; } Task WritePartAsync(UploadRuntimeCache task, int partNumber, Stream content, long size, CancellationToken ct) => throw new NotSupportedException(); public Task InitUploadAsync(InitiateUploadCommand command,CancellationToken token); public Task GenerateUploadUrlAsync(GenerateUploadUrlCommand command, CancellationToken token); public Task CompleteUploadAsync(CompleteUploadCommand command, CancellationToken token); /// /// 单次直传:把整个文件一次性写入存储(小文件,不分片)。 /// public Task PutObjectAsync(PutObjectCommand command, CancellationToken token); /// /// 生成可直接访问的公开直链。 /// 文件位于公开桶/目录返回直链;私有文件返回 null(需走鉴权下载接口)。 /// public string? GetPublicUrl(StorageLocation location); /// /// 打开文件读取流(用于私有文件鉴权下载)。 /// public Task OpenReadAsync(StorageLocation location, CancellationToken token); } }