教学思路ASP.Net之服务器控件: 四、FileUpload

简介:
在ASP.Net中如果想打开一个文件实现保存的效果,不能像Winform中使用openFileDialog控件,可以限制打开文件的类型,是否上传也必须通过另外一个控件的一个事件才能激发,如下Button2_Click.
winform中openFileDialog的使用方法如下,但是可参考性很少
openFileDialog1.Filter = "图片类型(*.jpg)|*.jpg";//限制打开文件的类型
            if (openFileDialog1.ShowDialog() == DialogResult.OK)  //根据对话框的选择结果判断是否上传
            {
                imageList1.Images.Add(Image.FromFile(openFileDialog1.FileName));//上传选中的文件
            }
下面就让我们来学习一下FileUpLoad控件
InBlock.gif 1  //上传图片 
InBlock.gif 2          //TextBox2为上传图片的自定义文件名. 
InBlock.gif 3          protected  void Button2_Click( object sender, EventArgs e) 
InBlock.gif 4         { 
InBlock.gif 5                  if (FileUpload1.HasFile) //判读是否有文件 
InBlock.gif 6                 { 
InBlock.gif 7                          string filename = FileUpload1.FileName; //得到文件在本地的路径,及全路径 
InBlock.gif 8                          string kzm = filename.Substring(filename.LastIndexOf ( ".")); //将扩展名存放到变量kzm中 
InBlock.gif 9                          string uploadfilename = Server.MapPath( "upload") +"\\"+TextBox2.Text+kzm; //得到文件在服务器上的路径和文件名和扩展名。 
InBlock.gif10                          if (!kzm.Equals( ".jpg")&& kzm !=  ".JPG"//判断扩展名 
InBlock.gif11                                 Response.Write( "<script>alert('格式不正确');</script>"); 
InBlock.gif12                          if (File.Exists(uploadfilename))                  //判断重名 
InBlock.gif13                                 Response.Write( "<script>alert('图片重名,请更换图片名称!');</script>"); 
InBlock.gif14                          else 
InBlock.gif15                         { 
InBlock.gif16                                  try 
InBlock.gif17                                 { 
InBlock.gif18                                         FileUpload1.SaveAs(uploadfilename); //将文件上传到服务器上。 
InBlock.gif19                                         Image1.ImageUrl = "upload\\" + TextBox2.Text + kzm; //图片路径为刚才上传的文件 
InBlock.gif20                                         Image1.Height = 300; //控制图片的大小 
InBlock.gif21                                         Image1.Width =250; 
InBlock.gif22                                 } 
InBlock.gif23                                  catch(Exception ex) 
InBlock.gif24                                 { 
InBlock.gif25                                            Response .Write ( "<script>alert('"+ex.Message.ToString ()+ "');</script>"); 
InBlock.gif26                                 } 
InBlock.gif27                         } 
InBlock.gif28                 } 
InBlock.gif29                  else 
InBlock.gif30                 { 
InBlock.gif31                         Response.Write( "<script>alert('你还没选择上传的图片!');</script>"); 
InBlock.gif32             
InBlock.gif33                 } 
InBlock.gif34         }
下面的代码为在客户端书写对于上传控件文本格式的验证方法:
< %@ 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文件进行调用验证脚本的方法如下:
InBlock.gif using System; 
InBlock.gif using System.Data; 
InBlock.gif using System.Configuration; 
InBlock.gif using System.Collections; 
InBlock.gif using System.Web; 
InBlock.gif using System.Web.Security; 
InBlock.gif using System.Web.UI; 
InBlock.gif using System.Web.UI.WebControls; 
InBlock.gif using System.Web.UI.WebControls.WebParts; 
InBlock.gif using System.Web.UI.HtmlControls; 
InBlock.gif 
InBlock.gif public partial  class Upload : System.Web.UI.Page 
InBlock.gif
InBlock.gif         protected  void Page_Load( object sender, EventArgs e) 
InBlock.gif     { 
InBlock.gif                btn_Upload.Attributes.Add( "onclick""javascript:return checkmes('" + fu_Excel.ClientID +  "');"); 
InBlock.gif        } 
InBlock.gif 
InBlock.gif         protected  void btn_Upload_Click( object sender, EventArgs e) 
InBlock.gif    { 
InBlock.gif                 //上传文件的服务器端代码 
InBlock.gif        } 
InBlock.gif}
对于上传文件的验证方式还可以采用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"/>  
批量上传:
InBlock.gif 1protected  void Button3_Click( object sender, EventArgs e) 
InBlock.gif 2        { 
InBlock.gif 3                HttpFileCollection fileuploadControls = Request.Files; 
InBlock.gif 4                 for ( int i = 0; i < fileuploadControls.Count; i++) 
InBlock.gif 5                { 
InBlock.gif 6                        HttpPostedFile fileuploadcontrol = fileuploadControls[i]; 
InBlock.gif 7                         if (fileuploadControls[i].ContentLength > 0) 
InBlock.gif 8                        { 
InBlock.gif 9                                 try 
InBlock.gif10                                { 
InBlock.gif11                                        fileuploadcontrol.SaveAs(Server.MapPath( "upload") +"\\"+Path.GetFileName( fileuploadControls[i].FileName)); 
InBlock.gif12                                } 
InBlock.gif13                                 catch (Exception ex) 
InBlock.gif14                                { 
InBlock.gif15                                        Response.Write( "<script>alert('" + ex.Message.ToString() +  "');</script>"); 
InBlock.gif16                                } 
InBlock.gif17                        } 
InBlock.gif18                } 
InBlock.gif19                Response.Write( "<script>alert('上传成功!');</script>"); 
InBlock.gif20        }
本文转自叶子文文博客51CTO博客,原文链接http://blog.51cto.com/leafwf/185694如需转载请自行联系原作者

叶子文文
相关文章
|
3月前
|
开发框架 前端开发 JavaScript
盘点72个ASP.NET Core源码Net爱好者不容错过
盘点72个ASP.NET Core源码Net爱好者不容错过
71 0
|
3月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
37 0
|
6月前
|
开发框架 前端开发 .NET
Ajax之三 Ajax服务器端控件(下)
Ajax之三 Ajax服务器端控件(下)
45 0
|
3月前
|
开发框架 安全 .NET
IIS服务器发布ASP.NET项目
对于云服务器,程序员一般不会陌生,如果项目需要发布到现网,那么服务器是必不可缺的一项硬性条件,那么如何在云服务器上部署一个项目,需要做哪些配置准备,下面就由本文档为大家讲解,本篇以IIS服务器发布ASP.NET项目为例。
47 1
|
6月前
|
开发框架 前端开发 JavaScript
Ajax之三 Ajax服务器端控件(上)
Ajax之三 Ajax服务器端控件
33 0
|
1月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
29 0
|
2月前
|
SQL 开发框架 前端开发
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
34 0
|
3月前
|
SQL 开发框架 JavaScript
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
29 0
|
4月前
|
开发框架 .NET 数据安全/隐私保护
Asp.Net第二章服务器端控件
Asp.Net第二章服务器端控件
27 0
|
4月前
|
开发框架 JavaScript .NET
Asp.Net就业课之三验证控件
Asp.Net就业课之三验证控件
44 0