放一个HtmlInputFile
HttpFileCollection files  = HttpContext.Current.Request.Files;
if ( files.Count == 1 )
{
   HttpPostedFile postedFile = files[0];
   if ( postedFile.FileName != "" )
   {
      string fileName = Path.GetExtension(postedFile.FileName);
      string savePath = "/upload/" + fileName;
      try
      {
postedFile.SaveAs(savePath);
      }
      catch
      {
this.ShowMessage("上传照片失败!");
throw;
      }
  }
}

解决方案 »

  1.   

    一.     在Form中一定要将encType设为"multipart/form-data":
    <form id="WebForm3" method="post" encType="multipart/form-data" runat="server" >二.     判断是否有文件上传了:
    当用户没有选择任何要上传的文件,即HtmlInputFile控件中的文本框为空时点击了上传按钮后,在服务端得到的File1.PostedFile对象不是null,而是有对象的,所以不能用(File1.PostedFile == null)来判断是否上传了文件,用(File1.PostedFile.ContentLength != 0)来判断比较好三.     判断上传文件MIMIE类型:
    文件上传后可以用File1.PostedFile.ContentType来读取这个文件的MIMIE类型,这个MIMIE类型是系统通过上传文件的后缀名来获得的。四.     保存上传的文件:1.       文件可以通过File1.PostedFile.SaveAs(path) //path是服务器上的物理路径,来保存文件。if(File1.PostedFile.ContentLength != 0){       StringBuilder myStr = new StringBuilder();       myStr.Append("文件名称:" + File1.PostedFile.FileName);       myStr.Append("<br>");       myStr.Append("文件类型:" + File1.PostedFile.ContentType);       myStr.Append("<br>");       myStr.Append("文件长度:" + File1.PostedFile.ContentLength.ToString());       myStr.Append("<br>");              string path = Server.MapPath("./");  //当前路径       string fileName = File1.PostedFile.FileName.Substring(File1.PostedFile.FileName.LastIndexOf('\\')+1);       path += fileName;       if(File.Exists(path) == true)       {              Label1.Text = "服务器上已经有了你正在上传的文件:" + fileName;              return;       }       File1.PostedFile.SaveAs(path);        myStr.Append("保存完毕!");       myStr.Append("<br>");       Label1.Text = myStr.ToString();}else{       Label1.Text = "你没有选择要上载的文件或者上传的文件长度为0!";}