商讯信箱
用户名: @
密  码:   注册|忘记密码
登录
个人用户经销商
信箱 E杂志
您的位置:首页 > 学院 > 正文       

    (2)实现上载单个照片

    在Photos.aspx页面中,用户不仅可以实现批量上载图片,而且还可以实现上载单个图片。与在ASP.NET 1.x中实现文件上传的方法不同,本应用程序使用了ASP.NET 2.0提供的新功能予以实现,这为读者开拓了新视野。相关源代码如下所示。

<h4>添加照片</h4>
<p>若要通过 HTTP 添加单张照片,请选择文件和标题,然后单击"添加"<b></b>。</p>
<asp:FormView ID="FormView1" runat="server" DataSourceID="ObjectDataSource1" DefaultMode="insert" BorderWidth="0px" CellPadding="0" OnItemInserting="FormView1_ItemInserting">
    <InsertItemTemplate>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="必须选择标题。" ControlToValidate="PhotoFile" Display="Dynamic" Enabled="false" />
        <p>
            照片<br />
            <asp:FileUpload ID="PhotoFile" runat="server" Width="416" FileBytes='<%# Bind("BytesOriginal") %>' CssClass="textfield" /><br />
            标题<br />
            <asp:TextBox ID="PhotoCaption" runat="server" Width="326" Text='<%# Bind("Caption") %>' CssClass="textfield" />
        </p>
        <p style="text-align: right;">
            <asp:ImageButton ID="AddNewPhotoButton" runat="server" CommandName="Insert" SkinID="add" />
        </p>
    </InsertItemTemplate>
</asp:FormView>

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" TypeName="PhotoManager" SelectMethod="GetPhotos" InsertMethod="AddPhoto" DeleteMethod="RemovePhoto" UpdateMethod="EditPhoto">
    <SelectParameters>
        <asp:QueryStringParameter Name="AlbumID" Type="Int32" QueryStringField="AlbumID" />
    </SelectParameters>
    <InsertParameters>
        <asp:QueryStringParameter Name="AlbumID" Type="Int32" QueryStringField="AlbumID" />
    </InsertParameters>
</asp:ObjectDataSource>

    如上代码所示,其中主要包括了FormView、ObjectDataSource控件。同时,FormView控件的InsertItemTemplate模板属性中还定义了RequiredFieldValidator、FileUpload、TextBox和ImageButton控件。可能部分读者会感到疑惑:FormView控件通常用于显示数据源中的单条数据记录,它为何用到上载文件的实现当中内?实际上,从本质上而言,本小节所实现的功能是将照片和照片标题信息添加到数据库中,是一个添加单条数据的实现过程。使用FormView控件的模板属性InsertItemTemplate,并结合双向数据绑定表达式Bind,可以快速实现从客户端提交图片和图片标题的功能。具体与数据库交互的任务由ObjectDataSource控件实现。如代码所示,ObjectDataSource控件设置了TypeName、InsertMethod、SelectMethod、DeleteMethod、UpdateMethod、SelectParameters和InsertParameters等属性。与添加单条数据相关的只有TypeName、InsertMethod和InsertParameters属性,其他属性用于实现对对照片列表的显示和管理(下一小节分析)。由于该过程与上一小节中实现添加照片的过程同样都引用了AddPhoto方法,因此,不再多做说明。具体实现过程和代码分析参见上一小节内容。另外,在FormView控件中还定义了ItemInserting事件处理程序FormView1_ItemInserting。

    ItemInserting事件当插入数据前引发,通常可在此事件对应处理程序中执行一些先期条件判断。此处,在FormView1_ItemInserting中实现了上载文件大小的判断。具体代码如下所示。

protected void FormView1_ItemInserting(object sender, FormViewInsertEventArgs e)
{
    if (((Byte[])e.Values["BytesOriginal"]).Length == 0) e.Cancel = true;
}

    以上源代码来自Photos.aspx.cs文件。事件处理程序FormView1_ItemInserting实现了对用于上传图片大小的判断。此程序在数据插入处理之前执行,其判断如果照片大小为0,则放弃插入处理。

更多热点:Photoshop 视频教程 图片教程 开发速查手册

1 2 3 4
有问必答
©版权所有。未经许可,不得转载。
[责任编辑:李乾仑] [我要挑错]
相关产品
本文相关产品
   没有相关产品