using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using COSXML;
using COSXML.Auth;
using COSXML.Model.Tag;
namespace ZR.Admin.WebApi.Controllers.Business
{
///
/// COS 预签名上传
///
[Route("business/CosUpload")]
public class CosUploadController : BaseController
{
private readonly IConfiguration _config;
public CosUploadController(IConfiguration config)
{
_config = config;
}
///
/// 获取 COS PUT 预签名 URL(前端直传)
///
[HttpPost("presignUrl")]
public IActionResult GetPresignUrl([FromBody] CosPresignRequestDto dto)
{
var section = _config.GetSection("TencentCos");
var appId = section["AppId"];
var bucket = section["Bucket"];
var region = section["Region"];
var secretId = section["SecretId"];
var secretKey = section["SecretKey"];
var domainUrl = section["DomainUrl"];
var expireMinutes = int.Parse(section["PresignExpireMinutes"] ?? "10");
int count = Math.Clamp(dto.Count, 1, 9);
string ext = string.IsNullOrWhiteSpace(dto.Ext) ? ".jpg" : dto.Ext;
var cosConfig = new CosXmlConfig.Builder()
.SetRegion(region)
.Build();
var credentialProvider = new DefaultQCloudCredentialProvider(
secretId, secretKey, (long)expireMinutes * 60);
var cosXml = new CosXmlServer(cosConfig, credentialProvider);
var results = new List