/// <summary> /// 获取标签生成器 /// </summary> protected override TagBuilder GetTagBuilder() { var builder = new UploadBuilder(); Config(builder); return(builder); }
/// <summary> /// 配置过滤器 /// </summary> private void ConfigFilter(UploadBuilder builder) { if (_config.Contains(UiConst.Filter)) { builder.AddAttribute("[nzFilter]", _config.GetValue(UiConst.Filter)); return; } builder.AddAttribute("[nzFilter]", $"{GetWrapperId()}.filters"); }
/// <summary> /// 配置文件限制 /// </summary> private void ConfigLimit(UploadBuilder builder) { builder.AddAttribute("nzSize", _config.GetValue(UiConst.Size)); builder.AddAttribute("nzLimit", _config.GetValue(UiConst.Limit)); if (_config.Contains(UiConst.TotalLimit)) { builder.AddAttribute("[nzShowButton]", $"!{GetWrapperId()}.files||({GetWrapperId()}.files&&{GetWrapperId()}.files).length<{_config.GetValue( UiConst.TotalLimit )}"); } }
/// <summary> /// 配置文件类型限制 /// </summary> private void ConfigFileType(UploadBuilder builder) { if (_config.Contains(UiConst.FileType)) { builder.FileType(_config.GetValue(UiConst.FileType)); return; } builder.FileType(GetFileTypes()); }
/// <summary> /// 配置接受的文件类型 /// </summary> private void ConfigAccept(UploadBuilder builder) { if (_config.Contains(UiConst.Accept)) { builder.Accept(_config.GetValue(UiConst.Accept)); return; } builder.Accept(GetAccepts()); }
/// <summary> /// 获取标签生成器 /// </summary> protected override TagBuilder GetTagBuilder() { ResolveExpression(); var wrapperBuilder = new UploadWrapperBuilder(); var builder = new UploadBuilder(); wrapperBuilder.AppendContent(builder); ConfigWrapper(wrapperBuilder); Config(builder); return(wrapperBuilder); }
/// <summary> /// 配置 /// </summary> private void Config(UploadBuilder builder) { ConfigId(builder); ConfigDataSource(builder); ConfigMultiple(builder); ConfigButton(builder); ConfigFileType(builder); ConfigLimit(builder); ConfigEvents(builder); ConfigContent(builder); }
/// <summary> /// 配置文件类型限制 /// </summary> private void ConfigFileTypes(UploadBuilder builder) { if (_config.Contains(UiConst.FileTypes) == false) { return; } var types = _config.GetValue <List <FileType> >(UiConst.FileTypes); if (types == null) { return; } builder.Accept(types.Select(t => t.GetNames()).Join()); builder.FileType(types.Select(t => t.Description()).Join()); }
/// <summary> /// 配置 /// </summary> private void Config(UploadBuilder builder) { ConfigId(builder); ConfigDataSource(builder); ConfigMultiple(builder); ConfigDirectory(builder); ConfigFileList(builder); ConfigButton(builder); ConfigAccept(builder); ConfigFileType(builder); ConfigLimit(builder); ConfigFilter(builder); ConfigEvents(builder); ConfigContent(builder); }
/// <summary> /// 配置文件限制 /// </summary> private void ConfigLimit(UploadBuilder builder) { builder.AddAttribute("nzSize", _config.GetValue(UiConst.Size)); }
/// <summary> /// 配置文件类型限制 /// </summary> private void ConfigFileType(UploadBuilder builder) { builder.Accept(_config.GetValue(UiConst.Accept)); builder.FileType(_config.GetValue(UiConst.FileType)); ConfigFileTypes(builder); }
public UploadBuilderTests() { upload = UploadTestHelper.CreateUpload(); builder = new UploadBuilder(upload); }
public async Task Invoke(HttpContext context, IOptionsSnapshot <List <OptionsUpload> > options) { IUploadProvider uploadProvider = new UploadBuilder(options).Build(context.Request.Path.Value); if (uploadProvider == null) { await this.next(context); return; } //如果提交的数据不含有表单,context.Request.Form会异常,所以此处判断下长度 if (!context.Request.HasFormContentType) { context.Result404(); return; } var files = context.Request.Form.Files; //经过上面判断,说明匹配到了路由,但是附件是空的,那么直接返回,不用执行next了,因为路由是匹配的,但是没上传文件 if (files.Count == 0) { context.Result404(); return; } //理论上,上传都是通过post,应该不会出现get方式 if (context.Request.Query["directoryname"].Count > 0) { uploadProvider.options.DirectoryName = context.Request.Query["directoryname"][0]; } if (context.Request.Form["directoryname"].Count > 0) { uploadProvider.options.DirectoryName = context.Request.Form["directoryname"][0]; } foreach (var item in files) { if (item.Length > uploadProvider.options.MaxLength) { await context.Response.WriteAsync(new MessageData() { status = false, msg = "上传的文件中,有文件超过了系统限制大小" }.ToJson()); return; } if (!uploadProvider.options.Extension.Contains(System.IO.Path.GetExtension(item.FileName).Replace(".", ""))) { await context.Response.WriteAsync(new MessageData() { status = false, msg = "上传的文件中,有文件的格式不符合要求" }.ToJson()); return; } } List <string> faileds = new List <string>(); List <dynamic> success = new List <dynamic>(); foreach (var item in files) { if (!uploadProvider.Upload(hostingEnv, item, out dynamic result)) { faileds.Add(item.FileName); continue; } success.Add(result); } var resule = new MessageData() { status = faileds.Count == 0? true:false, msg = faileds.Count > 0? "文件上传完毕,其中以下文件失败(" + string.Join(',', faileds.ToArray()) + ")" : "文件上传完毕", data = success }; await context.Response.WriteAsync(resule.ToJson()); return; }