/// <summary> /// 得到七牛配置文件 /// </summary> /// <returns></returns> internal Qiniu.Storage.Config GetConfig(UploadPersistentOps uploadPersistentOps = null) { var config = new Qiniu.Storage.Config() { Zone = _qiNiuConfig.GetZone(), }; if (uploadPersistentOps != null) { config.UseHttps = uploadPersistentOps.IsUseHttps; config.ChunkSize = Get(uploadPersistentOps.ChunkUnit); if (uploadPersistentOps.MaxRetryTimes != -1) { config.MaxRetryTimes = uploadPersistentOps.MaxRetryTimes; } if (uploadPersistentOps.MaxRetryTimes != -1) { config.MaxRetryTimes = uploadPersistentOps.MaxRetryTimes; } } Qiniu.Storage.ChunkUnit Get( EInfrastructure.Core.Configuration.Ioc.Plugs.Storage.Enumerations.ChunkUnit chunkUnit) { int chunkUnits = chunkUnit.Id; return((Qiniu.Storage.ChunkUnit)chunkUnits); } return(config); }
/// <summary> /// / /// </summary> /// <param name="key">文件key</param> /// <param name="token"></param> /// <param name="uploadPersistentOps"></param> private UploadByTokenParam(string key, string token, UploadPersistentOps uploadPersistentOps = null) { Key = key; Token = token; UploadPersistentOps = uploadPersistentOps; }
/// <summary> /// 得到上传策略 /// </summary> /// <param name="uploadPersistentOps">上传策略</param> /// <returns></returns> protected virtual UploadPersistentOps GetUploadPersistentOps(UploadPersistentOps uploadPersistentOps) { if (uploadPersistentOps == null) { uploadPersistentOps = new UploadPersistentOps(); } if ((uploadPersistentOps.EnableCallback == null && _aLiYunStorageConfig.EnableCallback) || uploadPersistentOps.EnableCallback == true) { if (uploadPersistentOps.EnableCallback == null && _aLiYunStorageConfig.EnableCallback) { uploadPersistentOps.SetCallBack(Configuration.Ioc.Plugs.Storage.Enumerations .CallbackBodyType .FromValue <EInfrastructure.Core.Configuration.Ioc.Plugs.Storage. Enumerations.CallbackBodyType>(_aLiYunStorageConfig .CallbackBodyType) ?.Name ?? Configuration.Ioc.Plugs.Storage.Enumerations .CallbackBodyType.Json.Name, _aLiYunStorageConfig.CallbackHost, _aLiYunStorageConfig.CallbackUrl, _aLiYunStorageConfig.CallbackBody); } else { uploadPersistentOps.SetCallBack(uploadPersistentOps.CallbackBodyType, uploadPersistentOps.CallbackHost, uploadPersistentOps.CallbackUrl, uploadPersistentOps.CallbackBody); } } return(uploadPersistentOps); }
/// <summary> /// 得到七牛配置文件 /// </summary> /// <returns></returns> public Qiniu.Storage.Config GetConfig(UploadPersistentOps uploadPersistentOps = null) { var config = new Qiniu.Storage.Config() { Zone = QiNiuConfig.GetZone(), }; if (uploadPersistentOps != null) { config.UseHttps = uploadPersistentOps.IsUseHttps; config.ChunkSize = Get(uploadPersistentOps.ChunkUnit); if (uploadPersistentOps.MaxRetryTimes != -1) { config.MaxRetryTimes = uploadPersistentOps.MaxRetryTimes; } if (uploadPersistentOps.MaxRetryTimes != -1) { config.MaxRetryTimes = uploadPersistentOps.MaxRetryTimes; } } ChunkUnit Get(ChunkUnitEnum chunkUnit) { int chunkUnits = (int)chunkUnit; return((ChunkUnit)chunkUnits); } return(config); }
/// <summary> /// 得到文件上传额外参数 /// </summary> /// <param name="uploadPersistentOps"></param> /// <returns></returns> protected PutExtra GetPutExtra(UploadPersistentOps uploadPersistentOps = null) { PutExtra putExtra = new PutExtra(); if (uploadPersistentOps != null) { if (!string.IsNullOrEmpty(uploadPersistentOps.ResumeRecordFile)) { putExtra.ResumeRecordFile = uploadPersistentOps.ResumeRecordFile; } if (uploadPersistentOps.Params != null && uploadPersistentOps.Params.Count > 0) { putExtra.Params = uploadPersistentOps.Params; } if (!string.IsNullOrEmpty(uploadPersistentOps.MimeType)) { putExtra.MimeType = uploadPersistentOps.MimeType; } if (uploadPersistentOps.ProgressAction != null) { putExtra.ProgressHandler = (long uploadedBytes, long totalBytes) => { uploadPersistentOps.ProgressAction(uploadedBytes, totalBytes); }; } if (uploadPersistentOps.UploadController != null) { var state = putExtra.UploadController(); UploadStateEnum uploadState; if (state == UploadControllerAction.Activated) { uploadState = UploadStateEnum.Activated; } else if (state == UploadControllerAction.Aborted) { uploadState = UploadStateEnum.Aborted; } else { uploadState = UploadStateEnum.Suspended; } uploadPersistentOps.UploadController?.Invoke(uploadState); } if (uploadPersistentOps.MaxRetryTimes != -1) { putExtra.MaxRetryTimes = uploadPersistentOps.MaxRetryTimes; } } return(putExtra); }
/// <summary> /// 获得ObjectMetadata /// </summary> /// <param name="uploadPersistentOps"></param> /// <returns></returns> protected ObjectMetadata GetCallbackMetadata(UploadPersistentOps uploadPersistentOps) { if (uploadPersistentOps.EnableCallback != null && uploadPersistentOps.EnableCallback.Value && !string.IsNullOrEmpty(uploadPersistentOps.CallbackBody) && !string.IsNullOrEmpty(uploadPersistentOps.CallbackUrl)) { return(GetCallbackMetadata(uploadPersistentOps.CallbackUrl, uploadPersistentOps.CallbackBody)); } return(null); }
/// <summary> /// / /// </summary> /// <param name="key">文件key</param> /// <param name="stream">文件流</param> /// <param name="token">上传凭证</param> /// <param name="isResume">是否允许续传</param> /// <param name="uploadPersistentOps"></param> public UploadByTokenParam(string key, Stream stream, string token, bool isResume = true, UploadPersistentOps uploadPersistentOps = null) : this(key, token, uploadPersistentOps) { if (stream == null) { throw new ArgumentNullException("stream cannot be empty"); } Stream = stream; }
/// <summary> /// / /// </summary> /// <param name="key">文件key</param> /// <param name="byteArray">文件字符数组</param> /// <param name="token">文件上传凭证</param> /// <param name="isResume">是否允许续传</param> /// <param name="uploadPersistentOps">上传策略</param> public UploadByTokenParam(string key, byte[] byteArray, string token, bool isResume = true, UploadPersistentOps uploadPersistentOps = null) : this(key, token, uploadPersistentOps) { if (byteArray == null || byteArray.Length == 0) { throw new ArgumentNullException("byteArray cannot be empty"); } ByteArray = byteArray; IsResume = isResume; }
/// <summary> /// / /// </summary> /// <param name="key">文件key</param> /// <param name="byteArray">文件字符数组</param> /// <param name="token">文件Token</param> /// <param name="uploadPersistentOps">上传策略</param> public UploadByTokenParam(string key, byte[] byteArray, string token, UploadPersistentOps uploadPersistentOps = null) { if (byteArray == null || byteArray.Length == 0) { throw new ArgumentNullException("byteArray cannot be empty"); } Key = key; ByteArray = byteArray; Token = token; UploadPersistentOps = uploadPersistentOps; }
/// <summary> /// / /// </summary> /// <param name="key">文件key</param> /// <param name="stream">文件流</param> /// <param name="token"></param> /// <param name="uploadPersistentOps"></param> public UploadByTokenParam(string key, Stream stream, string token, UploadPersistentOps uploadPersistentOps = null) { if (stream == null) { throw new ArgumentNullException("stream cannot be empty"); } Key = key; Stream = stream; Token = token; UploadPersistentOps = uploadPersistentOps; }
/// <summary> /// 上传文件 /// </summary> /// <param name="isResume"></param> /// <param name="funcAction"></param> /// <param name="uploadPersistentOps"></param> /// <returns></returns> private UploadResultDto Upload(bool isResume, Func <string, UploadPersistentOps, ObjectMetadata, PutObjectResult> funcAction, UploadPersistentOps uploadPersistentOps) { return(ToolCommon.GetResponse(() => { var bucket = Core.Tools.GetBucket(_aLiYunConfig, uploadPersistentOps.Bucket); var persistentOps = base.GetUploadPersistentOps(uploadPersistentOps); var metadata = GetCallbackMetadata(persistentOps); PutObjectResult ret = funcAction.Invoke(bucket, persistentOps, metadata); if (ret.HttpStatusCode == HttpStatusCode.OK) { return new UploadResultDto(true, null, "success"); } return new UploadResultDto(false, ret, $"RequestId:{ret.RequestId}"); }, (message, ex) => new UploadResultDto(false, ex, message))); }
/// <summary> /// /// </summary> /// <param name="key">文件key</param> /// <param name="file">文件信息</param> /// <param name="uploadPersistentOps">上传策略</param> public UploadByFormFileParam(string key, IFormFile file, UploadPersistentOps uploadPersistentOps = null) { Key = key; File = file; UploadPersistentOps = uploadPersistentOps; }
/// <summary> /// 上传文件(前端上传,后台生成策略信息) /// </summary> /// <param name="key">文件地址</param> /// <param name="uploadPersistentOps">上传配置</param> public UploadPersistentOpsParam(string key, UploadPersistentOps uploadPersistentOps = null) { Key = key; UploadPersistentOps = uploadPersistentOps ?? new UploadPersistentOps(); }
/// <summary> /// 得到上传策略 /// </summary> /// <param name="uploadPersistentOps">上传策略</param> /// <returns></returns> protected UploadPersistentOps GetUploadPersistentOps(UploadPersistentOps uploadPersistentOps) { return(uploadPersistentOps ?? new UploadPersistentOps()); }
/// <summary> /// 根据文件流上传 /// </summary> /// <param name="key">文件地址</param> /// <param name="stream">文件流</param> /// <param name="uploadPersistentOps">上传配置</param> public UploadByStreamParam(string key, Stream stream, UploadPersistentOps uploadPersistentOps = null) { Key = key; Stream = stream; UploadPersistentOps = uploadPersistentOps; }
/// <summary> /// 根据文件流上传 /// </summary> /// <param name="key">文件地址</param> /// <param name="byteArray">字节数组</param> /// <param name="uploadPersistentOps">上传配置</param> public UploadByByteArrayParam(string key, byte[] byteArray, UploadPersistentOps uploadPersistentOps = null) { Key = key; ByteArray = byteArray; UploadPersistentOps = uploadPersistentOps; }
/// <summary> /// 得到上传策略 /// </summary> /// <param name="uploadPersistentOps">上传策略</param> /// <returns></returns> protected virtual UploadPersistentOps GetUploadPersistentOps(UploadPersistentOps uploadPersistentOps) { if (uploadPersistentOps == null) { uploadPersistentOps = new UploadPersistentOps(); } if (uploadPersistentOps.IsUseHttps == null) { uploadPersistentOps.IsUseHttps = _qiNiuConfig.IsUseHttps; } if (uploadPersistentOps.UseCdnDomains == null) { uploadPersistentOps.UseCdnDomains = _qiNiuConfig.UseCdnDomains; } if (uploadPersistentOps.IsAllowOverlap == null) { uploadPersistentOps.IsAllowOverlap = _qiNiuConfig.IsAllowOverlap; } if (uploadPersistentOps.ChunkUnit == null) { uploadPersistentOps.ChunkUnit = _qiNiuConfig.ChunkUnit; } if ((uploadPersistentOps.EnableCallback == null && _qiNiuConfig.EnableCallback) || uploadPersistentOps.EnableCallback == true) { if (uploadPersistentOps.EnableCallback == null && _qiNiuConfig.EnableCallback) { uploadPersistentOps.SetCallBack(CallbackBodyType .FromValue <CallbackBodyType>(_qiNiuConfig.CallbackBodyType) ?.Name ?? CallbackBodyType.Json.Name, _qiNiuConfig.CallbackHost, _qiNiuConfig.CallbackUrl, _qiNiuConfig.CallbackBody); } else { uploadPersistentOps.SetCallBack(uploadPersistentOps.CallbackBodyType, uploadPersistentOps.CallbackHost, uploadPersistentOps.CallbackUrl, uploadPersistentOps.CallbackBody); } } if (uploadPersistentOps.EnablePersistentNotifyUrl) { string persistentNotifyUrl = string.IsNullOrEmpty(uploadPersistentOps.PersistentNotifyUrl) ? _qiNiuConfig.PersistentNotifyUrl : uploadPersistentOps.PersistentNotifyUrl; uploadPersistentOps.SetPersistentNotifyUrl(persistentNotifyUrl); } if (uploadPersistentOps.EnablePersistentPipeline) { string persistentPipeline = string.IsNullOrEmpty(uploadPersistentOps.PersistentPipeline) ? _qiNiuConfig.PersistentPipeline : uploadPersistentOps.PersistentPipeline; uploadPersistentOps.SetPersistentPipeline(persistentPipeline); } return(uploadPersistentOps); }