在C#.net中做页面上传的程序。用Dhtml的控件:(创建文件上载控件,该控件带有一个文本框和一个浏览按钮。)和类HtmlInputFile的两种方法

来源:互联网 发布:小米手机如何重置网络 编辑:程序博客网 时间:2024/04/28 06:52

在C#.net中做页面上传的程序。用Dhtml的控件:<input type="file">(创建文件上载控件,该控件带有一个文本框和一个浏览按钮。)和类HtmlInputFile的两种方法

只用<input type="file">来做:

页面代码:
<form id="Form1" method="post" encType="multipart/form-data" runat="server">
<INPUT id="uploadfile1" style="Z-INDEX: 101; LEFT: 248px; POSITION: absolute; TOP: 200px"
    type="file" runat="server">
<asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 368px; POSITION: absolute; TOP: 320px" runat="server" Text="Button"></asp:Button>   
</form>
后台代码:
private void Button1_Click(object sender, System.EventArgs e)
{
 //上传文件的目的地址(服务器的根地址)
 string str_destination = "D://a//";
 str_destination = Server.MapPath(".");  
 //这是文件将上传到的服务器的绝对目录
 if (uploadfile1.PostedFile.ContentLength != 0) //判断选取对话框选取的文件长度是否为0
 {
  //获取上传文件的完全地址
  string myFileUrl=uploadfile1.PostedFile.FileName;
  //获取上传文件名
  string[] myFileNameArray=myFileUrl.Split('//');
  string myFileName=myFileNameArray[myFileNameArray.Length-1];
  System.Diagnostics.Trace.WriteLine(myFileName);

  uploadfile1.PostedFile.SaveAs(str_destination+"//"+myFileName); 
 }
}

用<input type="file">和类HtmlInputFile配合:

页面代码:
<form id="Form1" method="post" runat="server">
<INPUT style="Z-INDEX: 101; LEFT: 248px; POSITION: absolute; TOP: 200px" type="file" id="aa" runat="server" name="aa">
<asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 360px; POSITION: absolute; TOP: 352px" runat="server" Text="Button"></asp:Button>
</form>
后台代码:
  public enum File //定义一个人用于存放玩家上传文件信息的一个数组
  {
   FILE_SIZE , //大小
   FILE_POSTNAME, //类型(文件后缀名)
   FILE_SYSNAME , //系统名
   FILE_ORGINNAME, //原来的名字
   FILE_PATH //文件路径
  }
  private static Random rnd = new Random(); //获取一个随机数

  //HtmlInputFile是一个可以访问Html页面控件<input type="file">的可编程类
  public static string[] UploadFile(HtmlInputFile file,string Upload_Dir) //实现玩家文件上传功能的主函数
  {
   string[] arr = new String[5];
   string FileName = GetUniquelyString(); //获取一个不重复的文件名
   string FileOrginName = file.PostedFile.FileName.Substring(file.PostedFile.FileName.LastIndexOf("//")+1);//获取文件的原始名
   if(file.PostedFile.ContentLength<=0)
   { return null; }
   string postFileName;
   string FilePath = Upload_Dir.ToString();
   string path = FilePath + "//";
   try
   {
    int pos = file.PostedFile.FileName.LastIndexOf(".")+1;
    postFileName = file.PostedFile.FileName.Substring(pos,file.PostedFile.FileName.Length-pos);
    file.PostedFile.SaveAs(path+FileName+"."+postFileName); //存储指定的文件到指定的目录
   }
   catch(Exception exec)
   {
    throw(exec);
   }

   double unit = 1024;
   double size = Math.Round(file.PostedFile.ContentLength/unit,2);
   arr[(int)File.FILE_SIZE] = size.ToString(); //文件大小
   arr[(int)File.FILE_POSTNAME] = postFileName; //文件类型(文件后缀名)
   arr[(int)File.FILE_SYSNAME] = FileName; //文件系统名
   arr[(int)File.FILE_ORGINNAME] = FileOrginName; //文件原来的名字
   arr[(int)File.FILE_PATH]=path+FileName+"."+postFileName; //文件路径
   return arr;
  }

  public static string GetUniquelyString() //获取一个不重复的文件名
  {
   const int RANDOM_MAX_VALUE = 1000;
   string strTemp,strYear,strMonth,strDay,strHour,strMinute,strSecond,strMillisecond;

   DateTime dt =DateTime.Now;
   int rndNumber = rnd.Next(RANDOM_MAX_VALUE);
   strYear = dt.Year.ToString ();
   strMonth = (dt.Month > 9)? dt.Month.ToString() : "0" + dt.Month.ToString();
   strDay = (dt.Day > 9)? dt.Day.ToString() : "0" + dt.Day.ToString();
   strHour = (dt.Hour > 9)? dt.Hour.ToString() : "0" + dt.Hour.ToString();
   strMinute = (dt.Minute > 9)? dt.Minute.ToString() : "0" + dt.Minute.ToString();
   strSecond = (dt.Second > 9)? dt.Second.ToString() : "0" + dt.Second.ToString();
   strMillisecond = dt.Millisecond.ToString();

   strTemp = strYear + strMonth + strDay +"_"+ strHour + strMinute + strSecond +"_"+ strMillisecond +"_"+ rndNumber.ToString () ;

   return strTemp;
  }

  private void Button1_Click(object sender, System.EventArgs e)
  {
   //上传文件的目的地址(服务器的根地址)
   string str_destination = "";
   str_destination = Server.MapPath(".");
   UploadFile(aa,str_destination);
  }

控件<input type="file">和HtmlInputFile伺服器控制項時的原定上传文件大小为4M,
可以通过修改web.config文件可以改变这个默认值    ,最大上传文件的可能大小是 2 GB。  
  <configuration>      
        <system.web>      
                    <httpRuntime executionTimeout="90" maxRequestLength="100000" useFullyQualifiedRedirectUrl="false"></httpRuntime>
        </system.web>      
  <configuration>
 

原创粉丝点击