且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-09-05 12:24:03

在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控件
教学思路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之服务器控件: 四、FileUpload10                         if (!kzm.Equals(".jpg")&& kzm != ".JPG"//判断扩展名 
教学思路ASP.Net之服务器控件: 四、FileUpload11                                 Response.Write("<script>alert('格式不正确');</script>"); 
教学思路ASP.Net之服务器控件: 四、FileUpload12                         if (File.Exists(uploadfilename))                 //判断重名 
教学思路ASP.Net之服务器控件: 四、FileUpload13                                 Response.Write("<script>alert('图片重名,请更换图片名称!');</script>"); 
教学思路ASP.Net之服务器控件: 四、FileUpload14                         else 
教学思路ASP.Net之服务器控件: 四、FileUpload15                         { 
教学思路ASP.Net之服务器控件: 四、FileUpload16                                 try 
教学思路ASP.Net之服务器控件: 四、FileUpload17                                 { 
教学思路ASP.Net之服务器控件: 四、FileUpload18                                         FileUpload1.SaveAs(uploadfilename);//将文件上传到服务器上。 
教学思路ASP.Net之服务器控件: 四、FileUpload19                                         Image1.ImageUrl = "upload\\" + TextBox2.Text + kzm;//图片路径为刚才上传的文件 
教学思路ASP.Net之服务器控件: 四、FileUpload20                                         Image1.Height = 300;//控制图片的大小 
教学思路ASP.Net之服务器控件: 四、FileUpload21                                         Image1.Width =250; 
教学思路ASP.Net之服务器控件: 四、FileUpload22                                 } 
教学思路ASP.Net之服务器控件: 四、FileUpload23                                 catch(Exception ex) 
教学思路ASP.Net之服务器控件: 四、FileUpload24                                 { 
教学思路ASP.Net之服务器控件: 四、FileUpload25                                            Response .Write ("<script>alert('"+ex.Message.ToString ()+"');</script>"); 
教学思路ASP.Net之服务器控件: 四、FileUpload26                                 } 
教学思路ASP.Net之服务器控件: 四、FileUpload27                         } 
教学思路ASP.Net之服务器控件: 四、FileUpload28                 } 
教学思路ASP.Net之服务器控件: 四、FileUpload29                 else 
教学思路ASP.Net之服务器控件: 四、FileUpload30                 { 
教学思路ASP.Net之服务器控件: 四、FileUpload31                         Response.Write("<script>alert('你还没选择上传的图片!');</script>"); 
教学思路ASP.Net之服务器控件: 四、FileUpload32             
教学思路ASP.Net之服务器控件: 四、FileUpload33                 } 
教学思路ASP.Net之服务器控件: 四、FileUpload34         }
下面的代码为在客户端书写对于上传控件文本格式的验证方法:
<%@ 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之服务器控件: 四、FileUploadusing System; 
教学思路ASP.Net之服务器控件: 四、FileUploadusing System.Data; 
教学思路ASP.Net之服务器控件: 四、FileUploadusing System.Configuration; 
教学思路ASP.Net之服务器控件: 四、FileUploadusing System.Collections; 
教学思路ASP.Net之服务器控件: 四、FileUploadusing System.Web; 
教学思路ASP.Net之服务器控件: 四、FileUploadusing System.Web.Security; 
教学思路ASP.Net之服务器控件: 四、FileUploadusing System.Web.UI; 
教学思路ASP.Net之服务器控件: 四、FileUploadusing System.Web.UI.WebControls; 
教学思路ASP.Net之服务器控件: 四、FileUploadusing System.Web.UI.WebControls.WebParts; 
教学思路ASP.Net之服务器控件: 四、FileUploadusing System.Web.UI.HtmlControls; 
教学思路ASP.Net之服务器控件: 四、FileUpload 
教学思路ASP.Net之服务器控件: 四、FileUploadpublic 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之服务器控件: 四、FileUpload10                                { 
教学思路ASP.Net之服务器控件: 四、FileUpload11                                        fileuploadcontrol.SaveAs(Server.MapPath("upload") +"\\"+Path.GetFileName( fileuploadControls[i].FileName)); 
教学思路ASP.Net之服务器控件: 四、FileUpload12                                } 
教学思路ASP.Net之服务器控件: 四、FileUpload13                                catch (Exception ex) 
教学思路ASP.Net之服务器控件: 四、FileUpload14                                { 
教学思路ASP.Net之服务器控件: 四、FileUpload15                                        Response.Write("<script>alert('" + ex.Message.ToString() + "');</script>"); 
教学思路ASP.Net之服务器控件: 四、FileUpload16                                } 
教学思路ASP.Net之服务器控件: 四、FileUpload17                        } 
教学思路ASP.Net之服务器控件: 四、FileUpload18                } 
教学思路ASP.Net之服务器控件: 四、FileUpload19                Response.Write("<script>alert('上传成功!');</script>"); 
教学思路ASP.Net之服务器控件: 四、FileUpload20        }
本文转自叶子文文博客51CTO博客,原文链接http://blog.51cto.com/leafwf/185694如需转载请自行联系原作者

叶子文文