using Aliyun.OSS; using Aliyun.OSS.Common; using Castle.Core.Logging; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using System; using System.Collections.Generic; using System.Linq; using System.Security.AccessControl; using System.Text; using System.Threading.Tasks; using YuanXuan.IM.Common.Attributes; using YuanXuan.IM.Common.Dtos.ALiYun; namespace YuanXuan.IM.Common.Helpers { [Inject(Lifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Transient)] public class AliyunOssHelper { private readonly IOptionsMonitor ossConfig; private readonly ILogger logger; public AliyunOssHelper(IOptionsMonitor ossConfig, ILogger logger) { this.ossConfig = ossConfig; this.logger = logger; } public string UploadByStream(Stream stream, string fileName) { try { var client = new OssClient(ossConfig.CurrentValue.Endpoint, ossConfig.CurrentValue.AccessKeyId, ossConfig.CurrentValue.AccessKeySecret, new ClientConfiguration() { SignatureVersion = SignatureVersion.V4 }); client.SetRegion("cn-chengdu"); client.PutObject(ossConfig.CurrentValue.BucketName, fileName, stream); return $"https://{ossConfig.CurrentValue.BucketName}.{ossConfig.CurrentValue.Endpoint}/{fileName.TrimStart('/')}"; } catch (Exception ex) { logger.LogError("AliyunOssHelper UploadByStream Error:{0}", ex.Message); } return string.Empty; } } }