Files
IOT_API/Service/Interface/IFileStorageProvider.cs

29 lines
1.3 KiB
C#

using Model;
using Model.Dto.System;
using Model.Entity.System;
using System.IO;
using System.Threading.Tasks;
namespace Service.Interface
{
/// <summary>
/// 文件存储 Provider 抽象(Local 落地;MinIO/OSS 留扩展点)
/// 实现类命名约定:XxxFileStorageProvider,由 DependencyInjection 手动注册到 IFileStorageProvider
/// FileStorageService 通过 IEnumerable&lt;IFileStorageProvider&gt; 按配置 Provider 字段挑选实例
/// </summary>
public interface IFileStorageProvider
{
/// <summary>Provider 标识(local/minio/oss),与 FileStorageConfigEntity.Provider 对应</summary>
string ProviderName { get; }
/// <summary>上传文件,返回存储后的文件名(含相对路径)、访问 URL、扩展名、大小</summary>
Task<Result<FileUploadResultDto>> UploadAsync(Stream stream, string originalName, long size, FileStorageConfigEntity config);
/// <summary>删除文件(按存储后的相对文件名)</summary>
Task<Result> DeleteAsync(string storedFileName, FileStorageConfigEntity config);
/// <summary>测试连接/可用性(Local:检查目录可写;MinIO/OSS:检查 Bucket 可访问)</summary>
Task<Result> TestConnectionAsync(FileStorageConfigEntity config);
}
}