CSharp.Template/YuanXuan.IM.Common/Helpers/AliyunOssHelper.cs

53 lines
1.8 KiB
C#

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<OSSConfigResult> ossConfig;
private readonly ILogger<AliyunOssHelper> logger;
public AliyunOssHelper(IOptionsMonitor<OSSConfigResult> ossConfig,
ILogger<AliyunOssHelper> 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;
}
}
}