예제 #1
0
        /// <summary>
        /// 获取标签生成器
        /// </summary>
        protected override TagBuilder GetTagBuilder()
        {
            var builder = new UploadBuilder();

            Config(builder);
            return(builder);
        }
예제 #2
0
 /// <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");
 }
예제 #3
0
 /// <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 )}");
     }
 }
예제 #4
0
 /// <summary>
 /// 配置文件类型限制
 /// </summary>
 private void ConfigFileType(UploadBuilder builder)
 {
     if (_config.Contains(UiConst.FileType))
     {
         builder.FileType(_config.GetValue(UiConst.FileType));
         return;
     }
     builder.FileType(GetFileTypes());
 }
예제 #5
0
 /// <summary>
 /// 配置接受的文件类型
 /// </summary>
 private void ConfigAccept(UploadBuilder builder)
 {
     if (_config.Contains(UiConst.Accept))
     {
         builder.Accept(_config.GetValue(UiConst.Accept));
         return;
     }
     builder.Accept(GetAccepts());
 }
예제 #6
0
        /// <summary>
        /// 获取标签生成器
        /// </summary>
        protected override TagBuilder GetTagBuilder()
        {
            ResolveExpression();
            var wrapperBuilder = new UploadWrapperBuilder();
            var builder        = new UploadBuilder();

            wrapperBuilder.AppendContent(builder);
            ConfigWrapper(wrapperBuilder);
            Config(builder);
            return(wrapperBuilder);
        }
예제 #7
0
 /// <summary>
 /// 配置
 /// </summary>
 private void Config(UploadBuilder builder)
 {
     ConfigId(builder);
     ConfigDataSource(builder);
     ConfigMultiple(builder);
     ConfigButton(builder);
     ConfigFileType(builder);
     ConfigLimit(builder);
     ConfigEvents(builder);
     ConfigContent(builder);
 }
예제 #8
0
        /// <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());
        }
예제 #9
0
 /// <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);
 }
예제 #10
0
 /// <summary>
 /// 配置文件限制
 /// </summary>
 private void ConfigLimit(UploadBuilder builder)
 {
     builder.AddAttribute("nzSize", _config.GetValue(UiConst.Size));
 }
예제 #11
0
 /// <summary>
 /// 配置文件类型限制
 /// </summary>
 private void ConfigFileType(UploadBuilder builder)
 {
     builder.Accept(_config.GetValue(UiConst.Accept));
     builder.FileType(_config.GetValue(UiConst.FileType));
     ConfigFileTypes(builder);
 }
예제 #12
0
 public UploadBuilderTests()
 {
     upload = UploadTestHelper.CreateUpload();
     builder = new UploadBuilder(upload);
 }
예제 #13
0
 public UploadBuilderTests()
 {
     upload  = UploadTestHelper.CreateUpload();
     builder = new UploadBuilder(upload);
 }
예제 #14
0
        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;
        }