前言
今天跟大家分享一下如何基于abp.vnext 实现阿里云的Oss集成,环境基于 VS2022
一、操作步骤
1.引用官方阿里云Oss包
2.创建OssClient相关类
2.1 OssClientEx 主要用来封装ossClient的一些常用方法
public static class OssClientEx
{
public static Uri GeneratePresignedUriRequest(this OssClient client, string containerName, string key,int hours)
{
var req = new GeneratePresignedUriRequest(containerName, key, SignHttpMethod.Get)
{
Expiration = DateTime.Now.AddHours(hours)
};
return client.GeneratePresignedUri(req);
}
}
}
2.2 IOssClientFactory 创建client的工厂接口
public interface IOssClientFactory
{
OssClient CreateClient();
}
2.3 OssClientFactory 工厂的实现
public class OssClientFactory : IOssClientFactory
{
private readonly AliyunOSSOptions _options;
public OssClientFactory(IOptions<AliyunOSSOptions> options)
{
_options = options.Value;
}
public OssClient CreateClient()
{
OssClient client = new OssClient(_options.Endpoint, _options.AccessKeyId, _options.AccessKeySecret);
return client;
}
}
2.4 OssClientFactoryServiceCollectionExtensions依赖注入的扩展类
public static class OssClientFactoryServiceCollectionExtensions
{
public static IServiceCollection AddOssClient(this IServiceCollection services)
{
services.AddTransient<IOssClientFactory, OssClientFactory>();
return services;
}
public static IServiceCollection AddOssClient(this IServiceCollection services, Action<AliyunOSSOptions> configureOptions)
{
services.AddTransient<IOssClientFactory, OssClientFactory>();
services.Configure(configureOptions);
return services;
}
}
2.5 AliyunOSSOptions阿里云Oss配置的相关参数
public class AliyunOSSOptions
{
public string AccessKeyId { get; set; }
public string AccessKeySecret { get; set; }
public string Endpoint { get; set; }
public string ContainerName { get; set; }
public string PublicContainerName { get; set; }
public bool CreateContainerIfNotExists { get; set; }
}
3.OssClient使用方法
注入OssClinet
//注入配置
context.Services.Configure<OSSOptions>(configuration.GetSection("Oss"));
//注入client
context.Services.AddOssClient();
使用方法定义
private IOssClientFactory _ossClientFactory;
...
_ossClientFactory.CreateClient().GeneratePresignedUriRequest(containerName, key, 1);
注:在启动项中添加对应的Oss配置信息