41 lines
1.2 KiB
C#
41 lines
1.2 KiB
C#
using IM_API.Dtos;
|
|
using IM_API.Models.Upload;
|
|
using IM_API.VOs;
|
|
|
|
namespace IM_API.Interface.Services
|
|
{
|
|
public interface IStorageService
|
|
{
|
|
string ProviderName { get; }
|
|
UploadMode Mode { get; }
|
|
/// <summary>
|
|
/// 初始化上传任务
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
Task<CreateUploadTaskVo> InitTaskAsync(CreateUploadTaskDto dto);
|
|
/// <summary>
|
|
/// 创建分片任务
|
|
/// </summary>
|
|
/// <param name="taskId">文件上传任务ID</param>
|
|
/// <param name="partNumer"></param>
|
|
/// <returns></returns>
|
|
Task<UploadPartInstructionVo> CreatePartInstructionAsync(Guid taskId, int partNumer);
|
|
Task<Guid> CompleteAsync(
|
|
Guid taskId,
|
|
List<UploadPartDto> parts
|
|
);
|
|
|
|
Task MergeAsync(Guid taskId, string objectName, int totalChunks, List<UploadPartDto> parts);
|
|
|
|
Task<UploadTask> UploadSmallFileAsync(Stream stream, string fileName, string fileType, long size, string hash);
|
|
string GetDownloadUrl(string objectname);
|
|
}
|
|
public enum UploadMode
|
|
{
|
|
Proxy, // 本地 / 后端中转
|
|
Direct // 云直传
|
|
}
|
|
|
|
}
|