最近开发了一个文件上传下载控件,其支持的功能如下:

一、支持可设置不同权限级别的文件上传、下载、删除功能
二、支持验证器控件
三、支持扩展类型客户端和服务器端验证
四、支持FileSize属性

其界面如下:
论Web控件开发 - 完美上传下载控件
测试站点为:http://www.keyss.cn:8888 (并不一直开放)

这个自定义控件主要由五个子控件组成一个htmlfileinput两个imagebutton(上传和删除)和一个Hyperlink(用来下载)另外一个为inputhidden用来保存文件名和支持客户端验证。

其主最要的代码如下:
论Web控件开发 - 完美上传下载控件        protected override void Render(HtmlTextWriter writer)
{
论Web控件开发 - 完美上传下载控件
论Web控件开发 - 完美上传下载控件            writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, 
"0");
论Web控件开发 - 完美上传下载控件            writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, 
"0");
论Web控件开发 - 完美上传下载控件            
if(this.Width!=Unit.Empty)
论Web控件开发 - 完美上传下载控件                writer.AddAttribute(HtmlTextWriterAttribute.Width, Width.ToString());
论Web控件开发 - 完美上传下载控件            writer.AddAttribute(HtmlTextWriterAttribute.Border, 
"0");
论Web控件开发 - 完美上传下载控件            
//table
论Web控件开发 - 完美上传下载控件
            writer.RenderBeginTag(HtmlTextWriterTag.Table);
论Web控件开发 - 完美上传下载控件            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
论Web控件开发 - 完美上传下载控件            
//cell1
论Web控件开发 - 完美上传下载控件
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "98%");
论Web控件开发 - 完美上传下载控件            writer.RenderBeginTag(HtmlTextWriterTag.Td);
论Web控件开发 - 完美上传下载控件            
this.FileUpload.Attributes.Add("id",this.ClientID+"__file");
论Web控件开发 - 完美上传下载控件            
this.FileUpload.RenderControl(writer);
论Web控件开发 - 完美上传下载控件            writer.RenderEndTag();
论Web控件开发 - 完美上传下载控件            
//cell2
论Web控件开发 - 完美上传下载控件
            writer.AddAttribute(HtmlTextWriterAttribute.Nowrap,"Yes");
论Web控件开发 - 完美上传下载控件            writer.RenderBeginTag(HtmlTextWriterTag.Td);
论Web控件开发 - 完美上传下载控件            
//hiden input file
论Web控件开发 - 完美上传下载控件
            this.TxtFileName.Attributes.Add("id",this.ClientID);
论Web控件开发 - 完美上传下载控件            
this.TxtFileName.RenderControl(writer);
论Web控件开发 - 完美上传下载控件            
//upload btn
论Web控件开发 - 完美上传下载控件
            WriteSpace(writer);
论Web控件开发 - 完美上传下载控件            
string onClick = this.BtnUpLoad.Attributes["onclick"]==null?string.Empty:this.BtnUpLoad.Attributes["onclick"];
论Web控件开发 - 完美上传下载控件            
this.BtnUpLoad.Attributes["onclick"= string.Format("if(!({0}_obj.CheckUpload())) return false;",this.ClientID) + onClick;
论Web控件开发 - 完美上传下载控件            
this.BtnUpLoad.RenderControl(writer);
论Web控件开发 - 完美上传下载控件
论Web控件开发 - 完美上传下载控件            
//delete btn
论Web控件开发 - 完美上传下载控件
            if(this.AllowDelete) WriteSpace(writer); 
论Web控件开发 - 完美上传下载控件            onClick 
= (this.BtnDelete.Attributes["onclick"]==null)?string.Empty:this.BtnDelete.Attributes["onclick"];
论Web控件开发 - 完美上传下载控件            
this.BtnDelete.Attributes["onclick"= string.Format("if(!({0}_obj.CheckDelete())) return false;",this.ClientID)+ onClick;
论Web控件开发 - 完美上传下载控件            
this.BtnDelete.RenderControl(writer);
论Web控件开发 - 完美上传下载控件
论Web控件开发 - 完美上传下载控件
论Web控件开发 - 完美上传下载控件            
//download btn
论Web控件开发 - 完美上传下载控件
            WriteSpace(writer);
论Web控件开发 - 完美上传下载控件            
this.BtnDownload.Attributes["onclick"]=string.Format("if(!({0}_obj.CheckDownload(this))) return false;",this.ClientID);
论Web控件开发 - 完美上传下载控件            
this.BtnDownload.RenderControl(writer);
论Web控件开发 - 完美上传下载控件            writer.RenderEndTag();
论Web控件开发 - 完美上传下载控件            
论Web控件开发 - 完美上传下载控件            writer.RenderEndTag();
论Web控件开发 - 完美上传下载控件            writer.RenderEndTag();
论Web控件开发 - 完美上传下载控件        }

论Web控件开发 - 完美上传下载控件        
论Web控件开发 - 完美上传下载控件        
protected override void CreateChildControls()
{
论Web控件开发 - 完美上传下载控件            
this.Controls.Clear();
论Web控件开发 - 完美上传下载控件            
//button hidden ctl0
论Web控件开发 - 完美上传下载控件
            this._txtFileName = new System.Web.UI.HtmlControls.HtmlInputHidden();
论Web控件开发 - 完美上传下载控件            
this.Controls.Add(this._txtFileName);
论Web控件开发 - 完美上传下载控件
论Web控件开发 - 完美上传下载控件            
//file upload ctl1
论Web控件开发 - 完美上传下载控件
            this._fileUpload = new System.Web.UI.HtmlControls.HtmlInputFile();
论Web控件开发 - 完美上传下载控件            
this._fileUpload.Style.Add("WIDTH","100%");
论Web控件开发 - 完美上传下载控件            
if(this.CSS!=string.Empty)
论Web控件开发 - 完美上传下载控件                
this._fileUpload.Attributes.Add("class",this.CSS);
论Web控件开发 - 完美上传下载控件            
this.Controls.Add(this._fileUpload);
论Web控件开发 - 完美上传下载控件
论Web控件开发 - 完美上传下载控件            
//button upload
论Web控件开发 - 完美上传下载控件
            this._btnUpLoad = new ImageButton();
论Web控件开发 - 完美上传下载控件            
this._btnUpLoad.ImageUrl = this.UploadImg;
论Web控件开发 - 完美上传下载控件            
if(this.UploadFileNameType != FileNameType.AutoGenerate)
论Web控件开发 - 完美上传下载控件                
this._btnUpLoad.EnableWarning = true;
论Web控件开发 - 完美上传下载控件            
else
论Web控件开发 - 完美上传下载控件                
this._btnUpLoad.EnableWarning = false;
论Web控件开发 - 完美上传下载控件            
this._btnUpLoad.AlternateText = this.UploadAlt;
论Web控件开发 - 完美上传下载控件            
this._btnUpLoad.WarningMessage = "如果文件已经存在将被覆盖,确定吗?";
论Web控件开发 - 完美上传下载控件            
this._btnUpLoad.CausesValidation = false;
论Web控件开发 - 完美上传下载控件            
this._btnUpLoad.Click += new ImageClickEventHandler(Upload_Clicked);
论Web控件开发 - 完美上传下载控件            
this.Controls.Add(this._btnUpLoad);
论Web控件开发 - 完美上传下载控件
论Web控件开发 - 完美上传下载控件            
//button delete
论Web控件开发 - 完美上传下载控件
            this._btnDelete = new ImageButton();
论Web控件开发 - 完美上传下载控件            
this._btnDelete.ImageUrl = this.DeleteImg;
论Web控件开发 - 完美上传下载控件            
this._btnDelete.EnableWarning = true;
论Web控件开发 - 完美上传下载控件            
this._btnDelete.AlternateText = this.DeleteAlt;
论Web控件开发 - 完美上传下载控件            
this._btnDelete.WarningMessage = "确定要删除吗?";
论Web控件开发 - 完美上传下载控件            
this._btnDelete.CausesValidation = false;
论Web控件开发 - 完美上传下载控件            
this._btnDelete.Click +=new ImageClickEventHandler(Delete_Clicked);
论Web控件开发 - 完美上传下载控件            
if(!this.AllowDelete)
论Web控件开发 - 完美上传下载控件                
this._btnDelete.Visible = false;
论Web控件开发 - 完美上传下载控件            
this.Controls.Add(this._btnDelete);
论Web控件开发 - 完美上传下载控件
论Web控件开发 - 完美上传下载控件            
//button download
论Web控件开发 - 完美上传下载控件
            this._btnDownload = new HyperLink();
论Web控件开发 - 完美上传下载控件            
this._btnDownload.Style.Add("cusor","hand");
论Web控件开发 - 完美上传下载控件            
this._btnDownload.ImageUrl = this.DownloadImg;
论Web控件开发 - 完美上传下载控件            
this._btnDownload.ToolTip = this.DownloadAlt;
论Web控件开发 - 完美上传下载控件            
this._btnDownload.NavigateUrl = this.FullFileName;
论Web控件开发 - 完美上传下载控件            
this._btnDownload.Target = "_blank";
论Web控件开发 - 完美上传下载控件            
this._btnDownload.Text = "download";
论Web控件开发 - 完美上传下载控件
论Web控件开发 - 完美上传下载控件            
this.Controls.Add(this._btnDownload);
论Web控件开发 - 完美上传下载控件
论Web控件开发 - 完美上传下载控件            ChildControlsCreated 
= true;
论Web控件开发 - 完美上传下载控件        }

重载了createchildcontrols 和render并且当上传或删除成功时触发afteroperation事件。在输出inputhidden时将clientID作为其id属性输出支持客户端验证。

相关文章:

  • 2022-01-17
  • 2021-03-31
  • 2022-01-15
  • 2021-09-04
  • 2021-10-28
  • 2022-12-23
  • 2021-12-05
猜你喜欢
  • 2021-09-28
  • 2021-05-31
  • 2021-10-19
  • 2021-11-06
  • 2021-07-25
  • 2021-10-29
  • 2022-12-23
相关资源
相似解决方案