5.12 文件上传控件(FileUpload)

  在网站开发中,如果需要加强用户与应用程序之间的交互,就需要上传文件。例如在论坛中,用户需要上传文件分享信息或在博客中上传视频分享快乐等等。上传文件在ASP中是一个复杂的问题,可能需要通过组件才能够实现文件的上传。在ASP.NET中,开发环境默认的提供了文件上传控件来简化文件上传的开发。当开发人员使用文件上传控件时,将会显示一个文本框,用户可以键入或通过“浏览”按键浏览和选择希望上传到服务器的文件。创建一个文件上传控件系统生成的HTML代码如下所示。
+展开
-HTML
        <asp:FileUpload ID="FileUpload1" runat="server" />

  文件上传控件可视化设置属性较少,大部分都是通过代码控制完成的。当用户选择了一个文件并提交页面后,该文件作为请求的一部分上传,文件将被完整的缓存在服务器内存中。当文件完成上传,页面才开始运行,在代码运行的过程中,可以检查文件的特征,然后保存该文件。同时,上传控件在选择文件后,并不会立即执行操作,需要其他的控件来完成操作,例如按钮控件(Button)。实现文件上传的HTML核心代码如下所示。
+展开
-HTML
<body>
    <form id="form1" runat="server">
        <div>
            <asp:FileUpload ID="FileUpload1" runat="server" />
            <asp:Button ID="Button1" runat="server" Text="选择好了,开始上传" />  
        </div>
        </form>
</body>

  上述代码通过一个Button控件来操作文件上传控件,当用户单击按钮控件后就能够将上传控件中选中的控件上传到服务器空间中,示例代码如下所示。
+展开
-C#
        protected void Button1_Click(object sender, EventArgs e)
        {
            FileUpload1.PostedFile.SaveAs(Server.MapPath("upload/beta.jpg"));//上传文件另存为
        }

  上述代码将一个文件上传到了upload文件夹内,并保存为jpg格式,如图5-33所示。打开服务器文件,可以看到文件已经上传了,如图5-34所示。
上传文件
图5-33 上传文件
文件已经被上传
图5-34 文件已经被上传

  上述代码将文件保存在UPLOAD文件夹中,并保存为JPG格式。但是通常情况下,用户上传的并不全部都是JPG格式,也有可能是DOC等其他格式的文件,在这段代码中,并没有对其他格式进行处理而全部保存为了JPG格式。同时,也没有对上传的文件进行过滤,存在着极大的安全风险,开发人员可以将相应的文件上传的cs更改,以便限制用户上传的文件类型,示例代码如下所示。
+展开
-C#
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (FileUpload1.HasFile)//如果存在文件
            {
                string fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName);//获取文件扩展名
                if (fileExtension != ".jpg")//如果扩展名不等于jpg时
                {
                    Label1.Text = "文件上传类型不正确,请上传jpg格式";//提示用户重新上传
                }
                else
                {
                    FileUpload1.PostedFile.SaveAs(Server.MapPath("upload/beta.jpg"));//文件保存
                    Label1.Text = "文件上传成功";//提示用户成功
                }
            }
        }

  上述代码中决定了用户只能上传JPG格式,如果用户上传的文件不是JPG格式,那么用户将被提示上传的文件类型有误并停止用户的文件上传,如果文件的类型为JPG格式,用户就能够上传文件到服务器的相应目录中,如图5-35所示。运行上传控件进行文件上传,运行结果如图5-36所示。
文件类型错误
图5-35 文件类型错误
文件类型正确
图5-36 文件类型正确

  值得注意的是,上传的文件在.NET中,默认上传文件最大为4M左右,不能上传超过该限制的任何内容。当然,开发人员可以通过配置.NET相应的配置文件来更改此限制,但是推荐不要更改此限制,否则可能造成潜在的安全威胁。

注意:如果需要更改默认上传文件大小的值,通常可以直接修改存放在C:\WINDOWS\Microsoft.NET\FrameWork\V2.0.50727\CONFIG的ASP.NET 2.0配置文件,通过修改文件中的maxRequestLength标签的值,或者可以通过web.config来覆盖配置文件。

加支付宝好友偷能量挖...


评论(0)网络
阅读(107)喜欢(0)Asp.Net/C#/WCF