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