/// <summary> /// /// </summary> public BucketProvider(QiNiuStorageConfig qiNiuConfig) { _qiNiuConfig = qiNiuConfig; _storageProvider = new StorageProvider(qiNiuConfig); _jsonProvider = new NewtonsoftJsonProvider(); _httpClient = new HttpClient("http://rs.qbox.me"); }
/// <summary> /// /// </summary> public BaseStorageProvider(ILogService logService, QiNiuStorageConfig qiNiuConfig) { _logService = logService; QiNiuConfig = qiNiuConfig; new QiNiuConfigValidator().Validate(qiNiuConfig).Check(); Mac = new Mac(QiNiuConfig.AccessKey, QiNiuConfig.SecretKey); #region 策略 PutPolicy = new PutPolicy(); #region 成功后通知 if (!string.IsNullOrEmpty(QiNiuConfig.CallbackBody)) { PutPolicy.PersistentNotifyUrl = QiNiuConfig.PersistentNotifyUrl; PutPolicy.CallbackBody = QiNiuConfig.CallbackBody; PutPolicy.CallbackBodyType = QiNiuConfig.CallbackBodyType.GetDescription(); PutPolicy.CallbackUrl = QiNiuConfig.CallbackUrl; } if (!string.IsNullOrEmpty(QiNiuConfig.PersistentPipeline)) { PutPolicy.PersistentPipeline = QiNiuConfig.PersistentPipeline; } #endregion #endregion }
/// <summary> /// /// </summary> public BucketProvider(ILogger <BucketProvider> logger, QiNiuStorageConfig qiNiuConfig) { this._logger = logger; _qiNiuConfig = qiNiuConfig; _storageProvider = new StorageProvider(logger, qiNiuConfig); _jsonProvider = new NewtonsoftJsonProvider(); _httpClient = new HttpClient("http://rs.qbox.me"); }
/// <summary> /// 加载七牛云存储 /// </summary> /// <param name="services"></param> /// <param name="action">委托</param> public static IServiceCollection AddQiNiuStorage(this IServiceCollection services, Action <QiNiuStorageConfig> action) { QiNiuStorageConfig qiNiuStorageConfig = new QiNiuStorageConfig(); action.Invoke(qiNiuStorageConfig); return(services.AddQiNiuStorage(() => qiNiuStorageConfig)); }
/// <summary> /// 得到ChunkSize /// </summary> /// <param name="qiNiuConfig">七牛配置</param> /// <param name="chunkUnit">请求Unit</param> /// <returns></returns> internal static ChunkUnit GetChunkUnit(QiNiuStorageConfig qiNiuConfig, ChunkUnit chunkUnit) { if (chunkUnit != null) { return(chunkUnit); } return(qiNiuConfig.ChunkUnit); }
/// <summary> /// 得到最大重试次数 /// </summary> /// <param name="qiNiuConfig">七牛配置</param> /// <param name="maxRetryTime">最大重试次数</param> /// <returns></returns> internal static int GetMaxRetryTimes(QiNiuStorageConfig qiNiuConfig, int?maxRetryTime) { if (maxRetryTime != null) { return(maxRetryTime.Value); } return(qiNiuConfig.MaxRetryTimes); }
/// <summary> /// 得到上传凭证 /// </summary> /// <param name="qiNiuConfig">七牛配置文件</param> /// <param name="opsParam">上传策略</param> /// <param name="action"></param> /// <returns></returns> protected string GetUploadCredentials(QiNiuStorageConfig qiNiuConfig, UploadPersistentOpsParam opsParam, Action <PutPolicy> action = null) { PutPolicyConfig putPolicyConfig = new PutPolicyConfig(qiNiuConfig); putPolicyConfig.SetPutPolicy(opsParam); action?.Invoke(putPolicyConfig.GetPutPolicy()); return(Auth.CreateUploadToken(qiNiuConfig.GetMac(), putPolicyConfig.GetPutPolicy().ToJsonString())); }
/// <summary> /// 得到空间名 /// </summary> /// <param name="qiNiuStorageConfig">七牛配置</param> /// <param name="bucket">空间名</param> /// <param name="optBucket">目标空间</param> /// <returns></returns> internal static string GetBucket(QiNiuStorageConfig qiNiuStorageConfig, string bucket, string optBucket) { if (!string.IsNullOrEmpty(optBucket)) { return(optBucket); } return(GetBucket(qiNiuStorageConfig, bucket)); }
public void CheckQiNiuConfigValidaor() { QiNiuStorageConfig qiNiuStorageConfig = new QiNiuStorageConfig() { AccessKey = "access_key", SecretKey = "secretkey", Bucket = "bucket", Host = "host", Zones = ZoneEnum.ZoneCnNorth, CallbackBodyType = CallbackBodyType.Json.Id }; }
/// <summary> /// 得到默认空间域 /// </summary> /// <param name="qiNiuConfig">七牛配置</param> /// <param name="host">空间域</param> /// <returns></returns> internal static string GetHost(QiNiuStorageConfig qiNiuConfig, string host) { if (string.IsNullOrEmpty(host) == string.IsNullOrEmpty(qiNiuConfig.DefaultHost)) { throw new BusinessException("请输入默认空间域"); } if (!string.IsNullOrEmpty(host)) { return(host); } return(qiNiuConfig.DefaultHost); }
/// <summary> /// 得到空间名 /// </summary> /// <param name="qiNiuStorageConfig">七牛配置</param> /// <param name="bucket">空间名</param> /// <returns></returns> internal static string GetBucket(QiNiuStorageConfig qiNiuStorageConfig, string bucket) { if (string.IsNullOrEmpty(bucket) && string.IsNullOrEmpty(qiNiuStorageConfig.DefaultBucket)) { throw new BusinessException("请选择存储空间"); } if (!string.IsNullOrEmpty(bucket)) { return(bucket); } return(qiNiuStorageConfig.DefaultBucket); }
/// <summary> /// 得到七牛配置文件 /// </summary> /// <param name="qiNiuConfig">七牛配置</param> /// <param name="persistentOps">基础策略</param> /// <returns></returns> internal static Qiniu.Storage.Config GetConfig(QiNiuStorageConfig qiNiuConfig, BasePersistentOps persistentOps) { var config = new Qiniu.Storage.Config { Zone = GetZone(qiNiuConfig, persistentOps.Zone), UseHttps = GetHttpsState(qiNiuConfig, persistentOps.IsUseHttps), UseCdnDomains = GetCdn(qiNiuConfig, persistentOps.UseCdnDomains), ChunkSize = (Qiniu.Storage.ChunkUnit)(GetChunkUnit(qiNiuConfig, persistentOps.ChunkUnit).Id), MaxRetryTimes = GetMaxRetryTimes(qiNiuConfig, persistentOps.MaxRetryTimes), }; config.UseHttps = GetHttpsState(qiNiuConfig, persistentOps.IsUseHttps); config.UseCdnDomains = GetCdn(qiNiuConfig, persistentOps.UseCdnDomains); config.ChunkSize = (Qiniu.Storage.ChunkUnit)(GetChunkUnit(qiNiuConfig, persistentOps.ChunkUnit).Id); config.MaxRetryTimes = GetMaxRetryTimes(qiNiuConfig, persistentOps.MaxRetryTimes); return(config); }
/// <summary> /// /// </summary> /// <param name="qiNiuConfig"></param> /// <param name="zone"></param> /// <param name="defaultZone">默认空间委托</param> /// <returns></returns> internal static ZoneEnum GetZonePrivate(QiNiuStorageConfig qiNiuConfig, int?zone, Func <ZoneEnum> defaultZone = null) { if (zone == null && qiNiuConfig.DefaultZones == null) { if (defaultZone == null) { throw new BusinessException("请选择要操作的空间区域"); } return(defaultZone.Invoke()); } if (zone != null) { return((ZoneEnum)zone.Value); } return(qiNiuConfig.DefaultZones.Value); }
/// <summary> /// 得到空间区域 /// </summary> /// <param name="qiNiuConfig">七牛配置</param> /// <param name="zone">空间配置</param> /// <param name="defaultZone">默认空间区域</param> /// <returns></returns> internal static Qiniu.Storage.Zone GetZone(QiNiuStorageConfig qiNiuConfig, int?zone, Func <ZoneEnum> defaultZone = null) { switch (GetZonePrivate(qiNiuConfig, zone, defaultZone)) { case ZoneEnum.ZoneCnEast: default: return(Qiniu.Storage.Zone.ZONE_CN_East); case ZoneEnum.ZoneCnNorth: return(Qiniu.Storage.Zone.ZONE_CN_North); case ZoneEnum.ZoneCnSouth: return(Qiniu.Storage.Zone.ZONE_CN_South); case ZoneEnum.ZoneUsNorth: return(Qiniu.Storage.Zone.ZONE_US_North); case ZoneEnum.ZoneAsSingapore: return(Qiniu.Storage.Zone.ZONE_AS_Singapore); } }
// This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public IServiceProvider ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddCors(options => { options.AddPolicy("CorsPolicy", builder => builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader()); }); services.AddQiNiuStorage(() => { var config = new QiNiuStorageConfig("accessKey", "secretKey", ZoneEnum.ZoneCnSouth, "访问图片域名", "空间名"); config.SetCallBack(EInfrastructure.Core.Configuration.Ioc.Plugs.Storage.Enumerations .CallbackBodyType.Json.Id, "回调地址域名,后不加/", "回调地址相对路径,前需要加/", "{\"key\":\"$(key)\",\"hash\":\"$(etag)\",\"fsiz\":$(fsize),\"bucket\":\"$(bucket)\",\"name\":\"$(x:name)\",\"mimeType\":\"$(mimeType)\"}"); return(config); }); serviceProvider = EInfrastructure.Core.AutoFac.AspNetCore.AutofacAutoRegister.Use(services, (builder) => { }); return(serviceProvider); }
/// <summary> /// 加载七牛云存储 /// </summary> /// <param name="services"></param> /// <param name="configuration"></param> public static IServiceCollection AddQiNiuStorage(this IServiceCollection services, IConfiguration configuration) { StartUp.Run(); var section = configuration.GetSection(nameof(QiNiuStorageConfig)); if (section == null) { throw new BusinessException <string>("七牛云存储配置异常", HttpStatus.Err.Name); } QiNiuStorageConfig qiNiuStorageConfig = new QiNiuStorageConfig(section.GetValue <string>("AccessKey"), section.GetValue <string>("SecretKey"), section.GetValue <ZoneEnum>("DefaultZones"), section.GetValue <string>("DefaultHost"), section.GetValue <string>("DefaultBucket")) { IsUseHttps = section.GetValue <bool>("IsUseHttps"), UseCdnDomains = section.GetValue <bool>("UseCdnDomains"), IsAllowOverlap = section.GetValue <bool>("IsAllowOverlap"), PersistentNotifyUrl = section.GetValue <string>("PersistentNotifyUrl"), PersistentPipeline = section.GetValue <string>("PersistentPipeline"), ChunkUnit = ChunkUnit .FromValue <ChunkUnit>((section .GetValue <string>("ChunkUnit").ConvertToInt(ChunkUnit.U2048K.Id))) }; qiNiuStorageConfig.SetCallBack(section.GetValue <string>("CallbackBodyType").ConvertToInt(CallbackBodyType.Json.Id), section.GetValue <string>("CallbackHost"), section.GetValue <string>("CallbackUrl"), section.GetValue <string>("CallbackBody")); configuration.GetSection(nameof(QiNiuStorageConfig)).Bind(qiNiuStorageConfig); qiNiuStorageConfig.SetCallBackState(!string.IsNullOrEmpty(qiNiuStorageConfig.CallbackUrl) && !string.IsNullOrEmpty(qiNiuStorageConfig.CallbackHost)); return(AddQiNiuStorage(services, () => qiNiuStorageConfig)); }
/// <summary> /// 文件实现类 /// </summary> public StorageProvider(ILogService logService, QiNiuStorageConfig qiNiuConfig) : base(logService, qiNiuConfig) { }
/// <summary> /// 图片服务 /// </summary> public PictureService(ILogService logService, QiNiuStorageConfig qiNiuConfig) : base(logService, qiNiuConfig) { }
public ClaimQiNiuRequirementFilter(ILogService logService, QiNiuStorageConfig qiNiuConfig) { _qiNiuConfig = qiNiuConfig; _logService = logService; }
/// <summary> /// /// </summary> /// <param name="qiNiuConfig"></param> public ClaimQiNiuRequirementFilter(QiNiuStorageConfig qiNiuConfig) { _qiNiuConfig = qiNiuConfig; }
/// <summary> /// 图片服务 /// </summary> public PictureProvider(QiNiuStorageConfig qiNiuConfig) : base( qiNiuConfig) { }
/// <summary> /// /// </summary> public BaseStorageProvider(QiNiuStorageConfig qiNiuConfig) { _qiNiuConfig = qiNiuConfig; ValidationCommon.Check(qiNiuConfig, "七牛云存储配置异常", HttpStatus.Err.Name); }
/// <summary> /// 文件实现类 /// </summary> public StorageProvider(ILogger <StorageProvider> logger, QiNiuStorageConfig qiNiuConfig) : base(qiNiuConfig) { this._logger = logger; }
/// <summary> /// 得到Scheme /// </summary> /// <param name="qiNiuConfig">七牛存储配置</param> /// <param name="isUseCdn">是否使用cdn</param> /// <returns></returns> internal static bool GetCdn(QiNiuStorageConfig qiNiuConfig, bool?isUseCdn) { return(isUseCdn != null ? isUseCdn.Value : qiNiuConfig.UseCdnDomains); }
/// <summary> /// 文件实现类 /// </summary> public StorageProvider(QiNiuStorageConfig qiNiuConfig = null) : base(qiNiuConfig) { }
/// <summary> /// 得到Scheme /// </summary> /// <param name="qiNiuConfig">七牛存储配置</param> /// <param name="isUseHttps">是否使用https</param> /// <returns></returns> internal static string GetScheme(QiNiuStorageConfig qiNiuConfig, bool?isUseHttps) { return(GetHttpsState(qiNiuConfig, isUseHttps) ? "https://" : "http://"); }
/// <summary> /// 得到Scheme /// </summary> /// <param name="qiNiuConfig">七牛存储配置</param> /// <param name="isUseHttps">是否使用https</param> /// <returns></returns> internal static bool GetHttpsState(QiNiuStorageConfig qiNiuConfig, bool?isUseHttps) { return(isUseHttps != null ? isUseHttps.Value : qiNiuConfig.IsUseHttps); }
/// <summary> /// /// </summary> public BucketProvider(ILogger <BucketProvider> logger, QiNiuStorageConfig qiNiuConfig, IJsonProvider jsonProvider) : this(logger, qiNiuConfig) { _jsonProvider = jsonProvider; }
/// <summary> /// 图片服务 /// </summary> public PictureService(QiNiuStorageConfig qiNiuConfig = null) : base( qiNiuConfig) { }
/// <summary> /// /// </summary> public BucketProvider(QiNiuStorageConfig qiNiuConfig, IJsonProvider jsonProvider) : this(qiNiuConfig) { _jsonProvider = jsonProvider; }