123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- using Microsoft.AspNetCore.Http;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.Extensions.Configuration;
- using Microsoft.Extensions.Options;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Net.Http;
- using System.Threading.Tasks;
- using TEAMModelBI.DI.BIAzureStorage;
- using TEAMModelBI.Filter;
- using TEAMModelOS.Models;
- using TEAMModelOS.SDK;
- using TEAMModelOS.SDK.Context.BI;
- using TEAMModelOS.SDK.DI;
- using TEAMModelOS.SDK.Extension;
- namespace TEAMModelBI.Controllers.Core
- {
- [Route("blob")]
- [ApiController]
- public class BlobController : ControllerBase
- {
- private readonly AzureStorageFactory _azureStorage;
- private readonly IHttpClientFactory _clientFactory;
- private readonly AzureRedisFactory _azureRedis;
- private readonly AzureServiceBusFactory _serviceBus;
- private readonly DingDing _dingDing;
- private readonly Option _option;
- private readonly AzureCosmosFactory _azureCosmos;
- public IConfiguration _configuration { get; set; }
- public BlobController(AzureStorageFactory azureStorage, AzureServiceBusFactory serviceBus, IHttpClientFactory clientFactory, AzureRedisFactory azureRedis, IConfiguration configuration,
- DingDing dingDing,
- IOptionsSnapshot<Option> option, AzureCosmosFactory azureCosmos)
- {
- _azureStorage = azureStorage;
- _clientFactory = clientFactory;
- _serviceBus = serviceBus;
- _azureRedis = azureRedis;
- _configuration = configuration;
- _dingDing = dingDing;
- _option = option?.Value;
- _azureCosmos = azureCosmos;
- }
- /// <summary>
- /// BI顾问上传文件到指定的0-public
- /// </summary>
- /// <param name="file"></param>
- /// <returns></returns>
- [HttpPost("upload-public")]
- [AuthToken(Roles = "admin,rdc,assist,sales")]
- [RequestSizeLimit(102_400_000_00)]//最大10000m左右
- public async Task<IActionResult> UploadPublic([FromForm] IFormFile file,[FromHeader]string site)
- {
- var (id, _, _, school) = HttpContext.GetAuthTokenInfo();
- string fileExt = FileType.GetExtention(file.FileName).ToLower();
- var blobClient = _azureStorage.GetBlobContainerClient(containerName: "0-public");
- if ($"{site}".Equals(BIConst.Global))
- blobClient = _azureStorage.GetBlobContainerClient(containerName: "0-public", BIConst.Global);
- if (ContentTypeDict.dict.ContainsKey($".{fileExt}"))
- {
- //var url = await _azureStorage.GetBlobContainerClient(containerName: "0-public", BIConst.Global).UploadFileByContainer("0-public", file.OpenReadStream(), "school", $"{Guid.NewGuid()}.{fileExt}", false);
- //var url = await BIAzureStorageBlobExtensions.UploadFileByContainer(blobClient, file.OpenReadStream(), "school", $"{Guid.NewGuid()}.{fileExt}");
- var url = await AzureStorageBlobExtensions.UploadFileByContainer(blobClient, file.OpenReadStream(), "school", $"{Guid.NewGuid()}.{fileExt}");
- return Ok(new { url });
- }
- else
- {
- return BadRequest();
- }
- }
- }
- }
|