FileUpload控件应用

目的:使用FileUpload控件来达到控制网页文件上传的目的。

根目录下建有“WebPage”文件:

前台Html代码如下:

<form id="form1" runat="server">
    <div>
    <asp:FileUpload ID="FileUpload1" runat="server" />
    <asp:Button ID="upLoadFile" runat="server" Text="上传" 
            onclick="upLoadFile_Click" />
        <asp:Label ID="ShowMass" runat="server" Text=" "></asp:Label>
    <br />
    </div>
    </form>

后台代码如下:

 protected void upLoadFile_Click(object sender, EventArgs e)
    {
        string strName = FileUpload1.PostedFile.FileName;//使用fileupload控件获取上传文件的文件名
        if (strName != null)//如果文件名存在
        {
            bool fileOK = false;
            string kzm = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();//获取控件中文件的扩展名
            
            string juedui = Server.MapPath("~\\WebPage\\");//设置文件保存的本地路径为绝对路径,保存到当前项目中去
            string newFileName = juedui + FileUpload1.FileName;;
           if (FileUpload1.HasFile)//验证FileUpload控件确实包含文件
            {
                string[] allowedExtensions = { ".html", "aspx", ".htm", ".xhtml", ".asp", ".php", ".jsp" };
               for (int i = 0; i < allowedExtensions.Length; i++)
               {
                   if (kzm == allowedExtensions[i]) //验证扩展名是否符合
                   {
                       fileOK = true;
                   }
               }
            }
            if (fileOK)  //验证前面的判断是否都已经正确
            {
                try
                {
                    FileUpload1.PostedFile.SaveAs(newFileName);//将文件存储到服务器上
                }
                catch (Exception)
                {
                    ShowMass.Text = "文件上传失败";
                }
            }
 else
                   {
                       ShowMass.Text = "只能上传网页类型文件";
                   }
}

else//文件不存在的状况 { //蹦出弹框提示文件不存在,或者可以用jquery作 ShowMass.Text = "请重新选择文件上传!"; } }

参考链接:http://www.cnblogs.com/fuge/archive/2012/07/25/2608693.html

新增:

 当上传的文的网页文件为aspx页面时,上传该网页也同样要包含其.cs页面。用上面的方法只能得到所选择的aspx页面,并没有得到其下的.cs页,所以还要进行了些修改。

思路:用上面的方法已经能够获得到所选择文件的路径,使用FileUpload控件也能够将所选页面按照所想的上传到服务器中,所以想通过上传按钮再绑定一个路径,既绑定aspx的.cs页面,使用FileUpload控件的上传来上传两次,这样就可以达到想要的效果了!

新代码如下:

string strName = FileUpload1.PostedFile.FileName;//使用fileupload控件获取上传文件的文件名
        if (strName != "")//如果文件名存在
        {
            bool fileOK = false;
            string kzm = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();//获取控件中文件的扩展名
            //string newName = Guid.NewGuid().ToString();  //生成新的文件名,确保唯一性

            string juedui = Server.MapPath("~\\WebPage\\");//设置文件保存的本地路径为绝对路径,保存到当前项目中去
            string newFileName = juedui + FileUpload1.FileName;
            string newFileName2 = null;
            if (FileUpload1.HasFile)//验证FileUpload控件确实包含文件
            {
                string[] allowedExtensions = { ".html", ".aspx", ".htm", ".xhtml", ".asp", ".php", ".jsp" };
               for (int i = 0; i < allowedExtensions.Length; i++)
               {
                   if (kzm == allowedExtensions[i]) //验证扩展名是否符合
                   {
                       fileOK = true;
                   }
                   if (kzm == ".aspx")
                   {
                       newFileName2 = newFileName + ".cs";
                   }
               }
            }
            if (fileOK)  //验证前面的判断是否都已经正确
            {
                try
                {
                    FileName.Text = newFileName;
                    ShowMass.Text = "文件上传成功";
                    FileUpload1.PostedFile.SaveAs(newFileName);//将文件存储到服务器上
                    FileUpload1.PostedFile.SaveAs(newFileName2);
                }
                catch (Exception)
                {
                    ShowMass.Text = "文件上传失败";
                }
            }
            else
            {
                ShowMass.Text = "只能上传网页类型文件";
            }
        }
        else//文件不存在的状况
        { //蹦出弹框提示文件不存在,或者可以用jquery作
            ShowMass.Text = "请重新选择文件上传!";
        }
原文地址:https://www.cnblogs.com/dreamskies/p/2771289.html