IAzureBlobDBRepository.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using TEAMModelOS.SDK.Module.AzureBlob.Container;
  2. using Microsoft.AspNetCore.Http;
  3. using System.Collections.Generic;
  4. using System.Threading.Tasks;
  5. using System.IO;
  6. using Microsoft.WindowsAzure.Storage.Blob;
  7. using TEAMModelOS.SDK.Module.AzureBlob.Configuration;
  8. namespace TEAMModelOS.SDK.Module.AzureBlob.Interfaces
  9. {
  10. public interface IAzureBlobDBRepository
  11. {
  12. Task<List<AzureBlobModel>> UploadFiles(IFormFile[] file ,string fileSpace="common" ,bool contentTypeDefault = false);
  13. Task<AzureBlobModel> UploadFile(IFormFile file, string fileSpace = "wordfiles", bool contentTypeDefault = true);
  14. Task<AzureBlobModel> UploadPath(string path, string fileSpace = "common", bool contentTypeDefault = false);
  15. Task<AzureBlobModel> UploadObject(string fileName, object obj, string fileSpace = "common", bool contentTypeDefault = true);
  16. Task<AzureBlobModel> UploadText(string fileName, string text, string fileSpace = "common", bool contentTypeDefault = true);
  17. Task<AzureBlobModel> UploadFileByFolder(Stream fileSteam, string folder, string fileName, string fileSpace = "pptx", bool contentTypeDefault = true);
  18. Task<AzureBlobModel> UploadTextByFolder(string text, string folder, string fileName, string fileSpace = "pptx", bool contentTypeDefault = true);
  19. AzureBlobModel UploadFileByFolderNAsyn(Stream fileSteam, string folder, string fileName, string fileSpace = "pptx", bool contentTypeDefault = true);
  20. Task<string> GetBlobSasUri(string blobName, string containerName=null, string policyName = null);
  21. Task<string> GetBlobSasUriRead(string containerName, string blobName, string policyName = null);
  22. Task<(string, string, string)> GetContainerSasUri(string containerName=null, string policyName = null);
  23. Task<(string, string)> GetContainerSasUriRead(string containerName, string policyName = null);
  24. Task<bool> CreateSharedAccessPolicyAsync(string policyName , string containerName = null);
  25. Task DeleteSharedAccessPolicyAsync(string policyName, string containerName = null);
  26. Task Deleteblob(string sasUri);
  27. Task<List<BlobFileDto>> GetBlobDirectory(string containerName, string blobName);
  28. Task<Dictionary<string, object>> GetBlobSasUri(BlobSas blobSas,bool isRead);
  29. /// <summary>
  30. /// 获取某个文件的共享访问签名
  31. /// </summary>
  32. /// <param name="containerName"></param>
  33. /// <param name="blobName"></param>
  34. /// <returns></returns>
  35. Task<dynamic> GetBlobSasUriRead(string containerName, string blobName);
  36. /// <summary>
  37. /// 获取某个角色及对应的容器的共享访问签名
  38. /// </summary>
  39. /// <param name="blobSas"></param>
  40. /// <param name="isRead"></param>
  41. /// <returns></returns>
  42. Task<dynamic> GetContainerSasUri(BlobSas blobSas, bool isRead);
  43. /// <summary>
  44. /// 系统管理员 资源,题目关联,htex关联,学习活动学生上传文件关联,基本信息关联,教室平面图关联,评测冷数据关联
  45. /// "system": [ "res", "item", "htex", "task", "info", "room", "exam" ],
  46. /// 资源,题目关联,htex关联,学习活动学生上传文件关联,基本信息关联,教室平面图关联,评测冷数据关联
  47. /// "school": [ "res", "item", "htex", "task", "info", "room", "exam" ],
  48. /// 资源,题目关联,htex关联,学习活动关联,教师基本信息关联
  49. /// "teacher": [ "res", "item", "htex", "task", "info" ],
  50. /// 答案及学习活动上传的文件,学生基本信息关联
  51. ///"student": [ "stu/{studentId}/ans", "stu/{studentId}/task" ]
  52. /// </summary>
  53. /// <param name="name">容器名称</param>
  54. /// <param name="text">文件内容的流</param>
  55. /// <param name="folder">业务文件夹</param>
  56. /// <param name="fileName">文件名</param>
  57. /// <param name="contentTypeDefault">是否存放文件后缀对应的contentType</param>
  58. /// <returns></returns>
  59. Task<AzureBlobModel> UploadFileByContainer(string name, string text, string folder, string fileName, bool contentTypeDefault = true);
  60. }
  61. }