123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- using HiTeachCC.Service.PowerPoint.Implement;
- using HiTeachCC.Service.PowerPoint.Interface;
- using Microsoft.AspNetCore.Http;
- using Microsoft.AspNetCore.Mvc;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using TEAMModelOS.Models;
- using TEAMModelOS.SDK.Context.Constant.Common;
- using TEAMModelOS.SDK.Extension.DataResult.JsonRpcRequest;
- using TEAMModelOS.SDK.Extension.DataResult.JsonRpcResponse;
- using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
- using TEAMModelOS.SDK.Module.AzureBlob.Container;
- using TEAMModelOS.SDK.Module.AzureBlob.Interfaces;
- using TEAMModelOS.SDK.Module.AzureTable.Interfaces;
- namespace TEAMModelOS.Controllers.Syllabus
- {
- [Route("api/[controller]")]
- [ApiController]
- public class FileController:BaseController
- {
- private readonly IAzureTableDBRepository azureTableDBRepository;
- private readonly IAzureBlobDBRepository _azureBlobDBRepository;
- private readonly IPowerPointService powerPointService;
- private readonly IShapeGenerator shapeGenerator;
- public FileController(IAzureTableDBRepository _azureTableDBRepository, IAzureBlobDBRepository azureBlobDBRepository ,
- IPowerPointService _powerPointService, IShapeGenerator _shapeGenerator)
- {
- azureTableDBRepository = _azureTableDBRepository;
- _azureBlobDBRepository = azureBlobDBRepository;
- powerPointService = _powerPointService;
- shapeGenerator = _shapeGenerator;
- }
- [HttpPost("uploadFiles")]
- [RequestSizeLimit(204_800_000_00)] //最大20000m左右
- public async Task<BaseJosnRPCResponse> BlobSaveFile([FromForm] IFormFile[] files)
- {
- JsonRPCResponseBuilder responseBuilder = new JsonRPCResponseBuilder();
- FileTypeMap fileTypeMap = new FileTypeMap();
- fileTypeMap.GetFileTypes().TryGetValue(FileType.GetExtention(files[0].FileName).ToLower(), out FileType fileTpye);
- string type = "";
- if (fileTpye != null)
- {
- type = fileTpye.Type;
- }
- List<AzureBlobModel> list = await _azureBlobDBRepository.UploadFiles(files);
- await azureTableDBRepository.SaveAll<AzureBlobModel>(list);
- return responseBuilder.Data(list).build();
- }
- [HttpPost("uploadFile")]
- [RequestSizeLimit(204_800_000_00)] //最大20000m左右
- public async Task<BaseJosnRPCResponse> BlobSaveFile([FromForm] IFormFile file)
- {
- //IFormFileCollection s = Request.Form.Files;
- JsonRPCResponseBuilder responseBuilder = new JsonRPCResponseBuilder();
- FileTypeMap fileTypeMap = new FileTypeMap();
- fileTypeMap.GetFileTypes().TryGetValue(FileType.GetExtention(file.FileName).ToLower(), out FileType fileTpye);
- string type = "";
- if (fileTpye != null)
- {
- type = fileTpye.Type;
- }
- List<IFormFile> files = new List<IFormFile>();
- files.Add(file);
- List<AzureBlobModel> list = await _azureBlobDBRepository.UploadFiles(files.ToArray());
- await azureTableDBRepository.SaveAll<AzureBlobModel>(list);
- return responseBuilder.Data(list).build();
- }
-
- [HttpPost("uploadWangEditor")]
- [RequestSizeLimit(102_400_000_00)] //最大10000m左右
- public async Task<Dictionary<string, Object>> uploadWangEditor([FromForm] IFormFile[] files)
- {
- //IFormFileCollection s = Request.Form.Files;
- JsonRPCResponseBuilder responseBuilder = new JsonRPCResponseBuilder();
- FileTypeMap fileTypeMap = new FileTypeMap();
- fileTypeMap.GetFileTypes().TryGetValue(FileType.GetExtention(files[0].FileName).ToLower(), out FileType fileTpye);
- string type = "";
- if (fileTpye != null)
- {
- type = fileTpye.Type;
- }
- List<AzureBlobModel> list = await _azureBlobDBRepository.UploadFiles(files.ToArray());
- await azureTableDBRepository.SaveAll<AzureBlobModel>(list);
- return new Dictionary<string, object> { { "errno", 0 }, { "data", list.Select(x => x.BlobUrl) } };
- }
-
-
- /// <summary>
- /// {"Sha1Code":"1111","Length":233444}
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("uploaded")]
- public async Task<BaseJosnRPCResponse> uploaded(JosnRPCRequest<Dictionary<string, object>> request)
- {
- JsonRPCResponseBuilder responseBuilder = new JsonRPCResponseBuilder();
- List<AzureBlobModel> models = await azureTableDBRepository.FindListByDict<AzureBlobModel>(request.@params);
- if (models.IsNotEmpty())
- {
- return responseBuilder.Data(models.First()).build();
- }
- else
- {
- return responseBuilder.Data(null).build();
- }
- }
- /// <summary>
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("saveBlob")]
- public async Task<BaseJosnRPCResponse> saveBlob(JosnRPCRequest<AzureBlobModel> request)
- {
- JsonRPCResponseBuilder responseBuilder = new JsonRPCResponseBuilder();
- AzureBlobModel model = await azureTableDBRepository.SaveOrUpdate<AzureBlobModel>(request.@params);
- if (model != null && !string.IsNullOrEmpty(model.RowKey))
- {
- return responseBuilder.Data(model).build();
- }
- else
- {
- return responseBuilder.Data(null).build();
- }
- }
- /// <summary>
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("UploadDocument")]
- [RequestSizeLimit(102_400_000_00)] //最大10000m左右
- public async Task<BaseJosnRPCResponse> UploadDocument([FromForm] IFormFile file)
- {
- JsonRPCResponseBuilder responseBuilder = new JsonRPCResponseBuilder();
- Dictionary<string, object> model = await shapeGenerator.LoadPresentation(file);
- return responseBuilder.Data(model).build();
- }
- /// <summary>
- /// 获取共享访问签名 (读,写,新增)
- /// </summary>
- /// <param name="azureBlobSASDto"></param>
- /// <returns></returns>
- [HttpPost("getBlobSAS")]
- public BaseJosnRPCResponse GetBlobSAS(JosnRPCRequest<AzureBlobSASDto> azureBlobSASDto)
- {
- JsonRPCResponseBuilder responseBuilder = new JsonRPCResponseBuilder();
- AzureBlobSASDto azureBlobSAS = azureBlobSASDto.@params;
- //_azureBlobDBRepository.CreateSharedAccessPolicyAsync(azureBlobSAS.ContainerName, azureBlobSAS.PolicyName);
- string SAS = _azureBlobDBRepository.GetBlobSasUri(azureBlobSAS.ContainerName, azureBlobSAS.BlobName, azureBlobSAS.TEAMModelId,azureBlobSAS.PolicyName);
- return responseBuilder.Data(SAS).build();
- }
- /// <summary>
- /// 创建共享访问策略 (删除权限)
- /// </summary>
- /// <param name="azureBlobSASDto"></param>
- /// <returns></returns>
- [HttpPost("CreateSharedAccessPolicy")]
- public async Task<BaseJosnRPCResponse> CreateSharedAccessPolicyAsync(JosnRPCRequest<AzureBlobSASDto> azureBlobSASDto)
- {
- JsonRPCResponseBuilder responseBuilder = new JsonRPCResponseBuilder();
- AzureBlobSASDto azureBlobSAS = azureBlobSASDto.@params;
- bool flg = await _azureBlobDBRepository.CreateSharedAccessPolicyAsync(azureBlobSAS.ContainerName, azureBlobSAS.PolicyName);
- //string SAS = _azureBlobDBRepository.GetBlobSasUri(azureBlobSAS.ContainerName, azureBlobSAS.BlobName, azureBlobSAS.TEAMModelId, azureBlobSAS.PolicyName);
- return responseBuilder.Data(flg).build();
- }
- /// <summary>
- /// 删除共享访问策略
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("DeleteSharedAccessPolicyAsync")]
- public async Task<BaseJosnRPCResponse> DeleteSharedAccessPolicyAsync(JosnRPCRequest<AzureBlobSASDto> azureBlobSASDto)
- {
- JsonRPCResponseBuilder responseBuilder = new JsonRPCResponseBuilder();
- AzureBlobSASDto azureBlobSAS = azureBlobSASDto.@params;
- await _azureBlobDBRepository.DeleteSharedAccessPolicyAsync(azureBlobSAS.ContainerName, azureBlobSAS.PolicyName);
- //string SAS = _azureBlobDBRepository.GetBlobSasUri(azureBlobSAS.ContainerName, azureBlobSAS.BlobName, azureBlobSAS.TEAMModelId, azureBlobSAS.PolicyName);
- return responseBuilder.build();
- }
- }
- }
|