在ASP.Net中如果想打开一个文件实现保存的效果,不能像Winform中使用openFileDialog控件,可以限制打开文件的类型,是否上传也必须通过另外一个控件的一个事件才能激发,如下Button2_Click.
winform中openFileDialog的使用方法如下,但是可参考性很少
openFileDialog1.Filter = "图片类型(*.jpg)|*.jpg";//限制打开文件的类型
            if (openFileDialog1.ShowDialog() == DialogResult.OK)  //根据对话框的选择结果判断是否上传
            {
                p_w_picpathList1.Images.Add(Image.FromFile(openFileDialog1.FileName));//上传选中的文件
            }
下面就让我们来学习一下FileUpLoad控件
教学思路ASP.Net之服务器控件: 四、FileUpload _职场 1 //上传图片
教学思路ASP.Net之服务器控件: 四、FileUpload _职场 2         //TextBox2为上传图片的自定义文件名.
教学思路ASP.Net之服务器控件: 四、FileUpload _职场 3         protected void Button2_Click(object sender, EventArgs e)
教学思路ASP.Net之服务器控件: 四、FileUpload _职场 4         {
教学思路ASP.Net之服务器控件: 四、FileUpload _职场 5                 if (FileUpload1.HasFile)//判读是否有文件
教学思路ASP.Net之服务器控件: 四、FileUpload _职场 6                 {
教学思路ASP.Net之服务器控件: 四、FileUpload _职场 7                         string filename = FileUpload1.FileName;//得到文件在本地的路径,及全路径
教学思路ASP.Net之服务器控件: 四、FileUpload _职场 8                         string kzm = filename.Substring(filename.LastIndexOf ("."));//将扩展名存放到变量kzm中
教学思路ASP.Net之服务器控件: 四、FileUpload _职场 9                         string uploadfilename = Server.MapPath("upload") +"\\"+TextBox2.Text+kzm;//得到文件在服务器上的路径和文件名和扩展名。
教学思路ASP.Net之服务器控件: 四、FileUpload _职场10                         if (!kzm.Equals(".jpg")&& kzm != ".JPG") //判断扩展名
教学思路ASP.Net之服务器控件: 四、FileUpload _职场11                                 Response.Write("<script>alert('格式不正确');</script>");
教学思路ASP.Net之服务器控件: 四、FileUpload _职场12                         if (File.Exists(uploadfilename))                 //判断重名
教学思路ASP.Net之服务器控件: 四、FileUpload _职场13                                 Response.Write("<script>alert('图片重名,请更换图片名称!');</script>");
教学思路ASP.Net之服务器控件: 四、FileUpload _职场14                         else
教学思路ASP.Net之服务器控件: 四、FileUpload _职场15                         {
教学思路ASP.Net之服务器控件: 四、FileUpload _职场16                                 try
教学思路ASP.Net之服务器控件: 四、FileUpload _职场17                                 {
教学思路ASP.Net之服务器控件: 四、FileUpload _职场18                                         FileUpload1.SaveAs(uploadfilename);//将文件上传到服务器上。
教学思路ASP.Net之服务器控件: 四、FileUpload _职场19                                         Image1.ImageUrl = "upload\\" + TextBox2.Text + kzm;//图片路径为刚才上传的文件
教学思路ASP.Net之服务器控件: 四、FileUpload _职场20                                         Image1.Height = 300;//控制图片的大小
教学思路ASP.Net之服务器控件: 四、FileUpload _职场21                                         Image1.Width =250;
教学思路ASP.Net之服务器控件: 四、FileUpload _职场22                                 }
教学思路ASP.Net之服务器控件: 四、FileUpload _职场23                                 catch(Exception ex)
教学思路ASP.Net之服务器控件: 四、FileUpload _职场24                                 {
教学思路ASP.Net之服务器控件: 四、FileUpload _职场25                                            Response .Write ("<script>alert('"+ex.Message.ToString ()+"');</script>");
教学思路ASP.Net之服务器控件: 四、FileUpload _职场26                                 }
教学思路ASP.Net之服务器控件: 四、FileUpload _职场27                         }
教学思路ASP.Net之服务器控件: 四、FileUpload _职场28                 }
教学思路ASP.Net之服务器控件: 四、FileUpload _职场29                 else
教学思路ASP.Net之服务器控件: 四、FileUpload _职场30                 {
教学思路ASP.Net之服务器控件: 四、FileUpload _职场31                         Response.Write("<script>alert('你还没选择上传的图片!');</script>");
教学思路ASP.Net之服务器控件: 四、FileUpload _职场32            
教学思路ASP.Net之服务器控件: 四、FileUpload _职场33                 }
教学思路ASP.Net之服务器控件: 四、FileUpload _职场34         }
下面的代码为在客户端书写对于上传控件文本格式的验证方法:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Upload.aspx.cs" Inherits="Upload" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
        <title>Asp.net文件上传时的客户端简单验证</title>
        
<script language="javascript" >
function checkmes(id)
{
     var filename = document.getElementById(id).value;
     //验证是否选择文件
     if(filename=="")
     {
         alert("请选择一个文件!");
         return false;
     }
        
     //验证扩展名
     var ex = filename.substring(filename.length-4);
     if(ex!=".xls")
     {
            alert("你选择的文件类型不正确,请选择一个Excel文件!");
            return false;
     }
        
     //最后提示信息
     return confirm("你确定要上传此Excel文件?");
}
</script>

</head>
<body>
        <form id="form1" runat="server">
        <div>
                <strong>Asp.net文件上传时的客户端简单验证<br />
                        <br />
                        <asp:FileUpload ID="fu_Excel" runat="server" Width="300px" /> 
                        <asp:Button ID="btn_Upload" runat="server" Text="上 传" OnClick="btn_Upload_Click" /> </strong></div>
        </form>
</body>
</html>
在CS文件进行调用验证脚本的方法如下:
教学思路ASP.Net之服务器控件: 四、FileUpload _职场using System;
教学思路ASP.Net之服务器控件: 四、FileUpload _职场using System.Data;
教学思路ASP.Net之服务器控件: 四、FileUpload _职场using System.Configuration;
教学思路ASP.Net之服务器控件: 四、FileUpload _职场using System.Collections;
教学思路ASP.Net之服务器控件: 四、FileUpload _职场using System.Web;
教学思路ASP.Net之服务器控件: 四、FileUpload _职场using System.Web.Security;
教学思路ASP.Net之服务器控件: 四、FileUpload _职场using System.Web.UI;
教学思路ASP.Net之服务器控件: 四、FileUpload _职场using System.Web.UI.WebControls;
教学思路ASP.Net之服务器控件: 四、FileUpload _职场using System.Web.UI.WebControls.WebParts;
教学思路ASP.Net之服务器控件: 四、FileUpload _职场using System.Web.UI.HtmlControls;
教学思路ASP.Net之服务器控件: 四、FileUpload _职场
教学思路ASP.Net之服务器控件: 四、FileUpload _职场public partial class Upload : System.Web.UI.Page
教学思路ASP.Net之服务器控件: 四、FileUpload _职场{
教学思路ASP.Net之服务器控件: 四、FileUpload _职场        protected void Page_Load(object sender, EventArgs e)
教学思路ASP.Net之服务器控件: 四、FileUpload _职场     {
教学思路ASP.Net之服务器控件: 四、FileUpload _职场                btn_Upload.Attributes.Add("onclick", "javascript:return checkmes('" + fu_Excel.ClientID + "');");
教学思路ASP.Net之服务器控件: 四、FileUpload _职场        }
教学思路ASP.Net之服务器控件: 四、FileUpload _职场
教学思路ASP.Net之服务器控件: 四、FileUpload _职场        protected void btn_Upload_Click(object sender, EventArgs e)
教学思路ASP.Net之服务器控件: 四、FileUpload _职场    {
教学思路ASP.Net之服务器控件: 四、FileUpload _职场                //上传文件的服务器端代码
教学思路ASP.Net之服务器控件: 四、FileUpload _职场        }
教学思路ASP.Net之服务器控件: 四、FileUpload _职场}
对于上传文件的验证方式还可以采用ASP.Net中的验证控件,如下便是对于照片格式的验证方式。
<asp:FileUpload ID="FileUpload1" runat="server" />
                                                                 <asp:RegularExpressionValidator        
id="FileUpLoadValidator" runat="server"        
ErrorMessage="上传图片只能为.jpg或.gif"        
ValidationExpression="^([a-zA-Z]:\\)[0-9a-zA-Z\u4e00-\u9fa5\w\s\\!@#\$%^&\*\(\)_\+\-=\[\]{};'\,\.]*(.jpg|.JPG|.gif|.GIF|.bmp|.BMP)$"        

ControlToValidate="FileUpload1"></asp:RegularExpressionValidator>
如果想改变上传文件的大小限制,要在config文件中,在  <system.web/> 节点内加入如下节点及其属性
 <httpRuntime executionTimeout ="90" maxRequestLength="4096"/> 
批量上传:
教学思路ASP.Net之服务器控件: 四、FileUpload _职场 1protected void Button3_Click(object sender, EventArgs e)
教学思路ASP.Net之服务器控件: 四、FileUpload _职场 2        {
教学思路ASP.Net之服务器控件: 四、FileUpload _职场 3                HttpFileCollection fileuploadControls = Request.Files;
教学思路ASP.Net之服务器控件: 四、FileUpload _职场 4                for (int i = 0; i < fileuploadControls.Count; i++)
教学思路ASP.Net之服务器控件: 四、FileUpload _职场 5                {
教学思路ASP.Net之服务器控件: 四、FileUpload _职场 6                        HttpPostedFile fileuploadcontrol = fileuploadControls[i];
教学思路ASP.Net之服务器控件: 四、FileUpload _职场 7                        if (fileuploadControls[i].ContentLength > 0)
教学思路ASP.Net之服务器控件: 四、FileUpload _职场 8                        {
教学思路ASP.Net之服务器控件: 四、FileUpload _职场 9                                try
教学思路ASP.Net之服务器控件: 四、FileUpload _职场10                                {
教学思路ASP.Net之服务器控件: 四、FileUpload _职场11                                        fileuploadcontrol.SaveAs(Server.MapPath("upload") +"\\"+Path.GetFileName( fileuploadControls[i].FileName));
教学思路ASP.Net之服务器控件: 四、FileUpload _职场12                                }
教学思路ASP.Net之服务器控件: 四、FileUpload _职场13                                catch (Exception ex)
教学思路ASP.Net之服务器控件: 四、FileUpload _职场14                                {
教学思路ASP.Net之服务器控件: 四、FileUpload _职场15                                        Response.Write("<script>alert('" + ex.Message.ToString() + "');</script>");
教学思路ASP.Net之服务器控件: 四、FileUpload _职场16                                }
教学思路ASP.Net之服务器控件: 四、FileUpload _职场17                        }
教学思路ASP.Net之服务器控件: 四、FileUpload _职场18                }
教学思路ASP.Net之服务器控件: 四、FileUpload _职场19                Response.Write("<script>alert('上传成功!');</script>");
教学思路ASP.Net之服务器控件: 四、FileUpload _职场20        }