日期:2008-11-30  浏览次数:20526 次

在VS.NET下创建文件上载控件

前言:
还记得在asp3.0里,我们为了上载文件可真是煞费苦心,写了一大堆的代码,可执行起来还是那么慢。但在asp.net里这个问题可以轻松搞定,这篇文章我们就探讨如何建立一个用户自定义的文件上载控件,并在我们的.ASPX程序中使用它。
正文
第一步:开发自定义文件上载控件
打开VS.NET,建立一个工程:WebApp,我们使用WebApp项目来做我们的工作。在项目WebApp上点右健选择Add下的Add Web User Control…,这时我们就可以建立一个用户自定义控件():FileUp.ascx,注意这个文件的扩展名是:.ascx。添加过程如下图所示:
图:添加用户自定义控件

图:添加用户自定义控件
我们建立FileUpload.ascx文件后,就可以象布置.html页面一样来设置布局。我们这个项目是要建立一个用户自定义的文件上载控件,在一个上载控件中有三个必备的元素,从某种意义上讲也可以说是“对象”:取得将要上载文件的HtmlInputFile控件、保存文件名的TextBox控件、按钮Button控件。我们可以使用VS.NET的工具箱里的File Field来直接添加它(看,VS.NET充分考虑了我们的需求),并把它的Runat属性设为Server,来告诉程序“我要在服务器上运行它”。为了体会ASP.NET为我们带来的优势,我们使用服务器端Web控件:TextBox和Button。控件的布局如下:


图:控件布局
界面设计完成以后,我们需要进一步设置各个控件的属性,主要有控件的ID,TEXT等,这里需要强调的关键有两点:一是HtmlInputFile控件的runat值:server;另外一个是Form表单的enctype属性:multipart/form-data,以支持多部分MIME数据上载。FileUpload.ascx文件的html代码如下:
FileUp.ascx
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="FileUp.ascx.cs" Inherits="WebApp.FileUp"%>

<HTML>
    <HEAD>
    </HEAD>
    <body>
        <!-- Add HTML Content and Server Controls. Do not add server
        <form>
        tags. -->
        <form enctype="multipart/form-data" runat=server method=post id=form1>
            <TABLE cellSpacing=1 cellPadding=1 width=400 border=0 height=151>
                <TR>
                    Selecte File To Upload:
                    <input type=file id=FileName runat="server" NAME="FileName"/>
                    </TD>
                </TR>
                <TR>
                    <TD style="HEIGHT: 27px">
                        Save The Name As:<asp:TextBox id=txtSaveName runat="server" Height="24px" Width="130px"></asp:TextBox></TD>
                </TR>
                <TR>
                    <TD valign=center align=right>
                        <asp:Button id=btnUplod runat="server" Text="Send File" height="24px" width="93px">
                        </asp:Button>  
                    </