using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Drawing;
using System.Drawing.Design; 
namespace Yingnet.Common
{
/// <summary>
/// FileUpload 的摘要说明。E:programCommonFileUpload.bmp
/// </summary>

[ToolboxBitmap(typeof(Yingnet.Common.FileUpload), "FileUpload.bmp"), 
DefaultProperty(
"Text"), DefaultEvent("Click"),
ToolboxData(
"<{0}:FileUpload runat=server></{0}:FileUpload>")]
public class FileUpload : System.Web.UI.WebControls.WebControl {
  
/// <summary>
  
/// 上传按钮
  
/// </summary>

  private Button button=new Button();
  
/// <summary>
  
/// 上传文件个数
  
/// </summary>

  private int filenum=1;
  
/// <summary>
  
/// File对象
  
/// </summary>

  private HtmlInputFile[] file;
  
/// <summary>
  
/// 保存路径,默认为系统的临时目录
  
/// </summary>

  private string path=System.IO.Path.GetTempPath();
  
/// <summary>
  
/// 上传的文件名组
  
/// </summary>

  private string[] filename;
  
/// <summary>
  
/// 后缀文件名组
  
/// </summary>

  private string[] suffix;
  
/// <summary>
  
///过滤器,写法是.txt;.abc
  
/// </summary>

  private string filter="";
  
/// <summary>
  
/// 限制文件上传大小,为0是不限制,单位是字节
  
/// </summary>

  private int size=0;//System.ComponentModel.DefaultEventAttribute
  
    
/// <summary>
    
/// 上传事件
    
/// </summary>

  [Bindable(true),Category("事件"),Description("上传后激发的事件")
  ] 
  
public event EventHandler Click;
  
/// <summary>
  
/// 上传文件数
  
/// </summary>

  [Bindable(true), 
  Category(
"参数"),Description("设定上传文件的个数"),
  DefaultValue(
"1")] 
  
public int FileNum{
   
set{
    
if(value<1){
     value
=1;
    }

    filenum
=value;
    
this.Controls.Clear();
    file
=new HtmlInputFile[filenum];
    filename
=new string[filenum];
    suffix
=new string[filenum];
    
for(int i=0;i<filenum;i++{
     file[i]
=new HtmlInputFile();
     
this.Controls.Add(file[i]);
    }

    
this.Controls.Add(button);
   }

   
get{
    
return filenum;
   }

  }

  
/// <summary>
  
/// 上传按钮的文本
  
/// </summary>

  [Bindable(true), 
  Category(
"参数"), Description("设定上传文件的路径"),
  DefaultValue(
"1")] 
   
/// <summary>
   
/// 上传路径
   
/// </summary>

  public string UploadPath {
   
set{
    
if("".Equals(value)||value==null){
     value
=System.IO.Path.GetTempPath();
    }

    path
=value;
   }

   
get{
    
return path;
   }

  }

  
/// <summary>
  
/// 得到文件名
  
/// </summary>

  public string[] Filename{
   
get{
    
return filename;
   }

  }

  
/// <summary>
  
/// 得到后缀
  
/// </summary>

  public string[] Suffix{
   
get{
    
return  suffix;
   }

  }

  
/// <summary>
  
/// 过滤器
  
/// </summary>

  public string Filter{
   
set{
    filter
=value;
   }

   
get{
    
return filter;
   }

  }

  
/// <summary>
  
/// 限制大小
  
/// </summary>

  public int FileSize{
   
set{
    size
=value;
   }

   
get{
    
return size;
   }

  }

  
/// <summary>
  
/// 快捷键
  
/// </summary>

  public override string AccessKey{
   
get{
    
return button.AccessKey;
   }

   
set{
    button.AccessKey
=value;
   }

  }

  
/// <summary>
  
/// 背景
  
/// </summary>

  public override System.Drawing.Color BackColor{
   
get{
    
return button.BackColor;
   }

   
set{
    button.BackColor
=value;
   }

  }

  
/// <summary>
  
/// 边框颜色
  
/// </summary>

  public override System.Drawing.Color BorderColor{
   
get{
    
return button.BorderColor;
   }

   
set{
    button.BorderColor
=value;
   }

  }

  
/// <summary>
  
/// 边框风格
  
/// </summary>

  public override BorderStyle BorderStyle{
   
get{
    
return button.BorderStyle;
   }

   
set{
    button.BorderStyle
=value;
   }

  }

  
/// <summary>
  
/// 文本
  
/// </summary>

  [Bindable(true), 
   Category(
"Appearance"), 
   DefaultValue(
"")] 
  
public string Text 
  
{
   
get
   
{
    
return button.Text;
   }

   
set
   
{
    button.Text 
= value;
   }

  }

  
  
public FileUpload():base(){
   
   FileNum
=1;
   button.Click
+=new EventHandler(this.button_Click);
   
this.Controls.Add(button);
   
  }

  
/// <summary>
  
/// 按钮事件
  
/// </summary>
  
/// <param name="sender"></param>
  
/// <param name="e"></param>

  private void button_Click(object sender, EventArgs e){
   Upload();
   
///添加你的代码
   if(Click!=null)
    Click(sender,e);  
///抛处事件
  }

  
/// <summary>
  
/// 上传
  
/// </summary>

  private void Upload(){
   System.Web.HttpPostedFile postedFile;
   
for(int i=0;i<filenum;i++){
    
try{
     postedFile
=file[i].PostedFile;
     
if(postedFile!=null{
      
if(postedFile.ContentLength>size && size!=0){
       
break;
      }

      
string suf=GetSuffix(postedFile.FileName);
      
if(filter!=null && filter.IndexOf(suf)>-1){
       
break;
      }

      filename[i]
=DateTime.Now.Ticks.ToString();
      suffix[i]
=suf;
      postedFile.SaveAs(System.IO.Path.Combine(path,filename[i]
+suf));
      
     
     }

    }
finally{
     filename[i]
="";
    }

   }

  }

  
/// <summary>
  
/// 获取后缀名
  
/// </summary>
  
/// <param name="filename">文件名</param>
  
/// <returns>返回带.的后缀名</returns>

  private string GetSuffix(string filename){
   
int index=filename.LastIndexOf(".");
   
if(index>0){
    
return filename.Substring(index);
   }

   
return "";
  }

   
}

}

http://blog.csdn.net/qdzx2008/archive/2005/09/15/481807.aspx
posted on 2007-02-25 13:43  mbskys  阅读(142)  评论(0)    收藏  举报