您的位置:首页 > 编程语言 > ASP

asp.net 2中的图片上传

2005-04-17 09:33 585 查看
    BETA 2出来了,暂时还没得到,因此还是用BETA 1研究。在asp.net 2中,如何实现图片的上传展示呢?下面,我用GRIDVIEW搭配文件上传功能进行实现(而实现文件上传的原理大致一样)。在ASP。NET 2中,GRIDVIEW十分方便了,在做编辑,更新,取消时,比.net 1.1写的代码更加少了。下面举例子说明,我使用的是northwind数据库的category表,其中没使用picture字段,因为它是IMAGE类型的,不想破坏这个表的结构,因此添加了PICTURE1字段,类型是VARCHAR,纯粹是存放

上传图片的绝对路径,为了演示方便。

  <%@ Page Language="C#" AutoEventWireup="true"  %>

<script runat="server">

   protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)

   {

      FileUpload fileUpload = GridView1.Rows[e.RowIndex]. FindControl("FileUpload1") as FileUpload;

 

      fileUpload.SaveAs(System.IO.Path.Combine("d://", fileUpload.FileName));

 

      SqlDataSource1.UpdateParameters["picture1"].DefaultValue = "d://"+fileUpload.FileName;

   }

</script>

 

<html " >

<head id="Head1" runat="server">

    <title>Untitled Page</title>

</head>

<body>

   <form id="form1" runat="server">

   <div>

      <asp:GridView AutoGenerateColumns="False" DataKeyNames="CategoryID" DataSourceID="SqlDataSource1" ID="GridView1" runat="server" OnRowUpdating="GridView1_RowUpdating">

          <Columns>

             <asp:CommandField ShowEditButton="True"></asp:CommandField>

             <asp:BoundField DataField="CategoryID" HeaderText="CustomerID" InsertVisible="False" ReadOnly="True" SortExpression="CategoryID"></asp:BoundField>

             <asp:BoundField DataField="categoryName" HeaderText="categoryName" SortExpression="categoryName"></asp:BoundField>

             <asp:TemplateField HeaderText="picture"><EditItemTemplate>

                    <asp:FileUpload ID="FileUpload1" runat="server" />

                 </EditItemTemplate>

                 <ItemTemplate>

                     <asp:Image ID="picture" Runat="server" ImageUrl='<%# Eval("picture1") %> ' />

                 </ItemTemplate>

             </asp:TemplateField>

           </Columns>

        </asp:GridView>

        <asp:SqlDataSource ConnectionString="server=localhost;uid=sa;password=XXXXX;database=northwind"

            ID="SqlDataSource1" runat="server"

            SelectCommand="SELECT [CategoryID], [categoryName], [picture1] FROM [Categories]"

            UpdateCommand="UPDATE [categories] SET [categoryname] = @categoryname, [picture1] = @picture1 WHERE [CategoryID] = @original_categoryID">

        <UpdateParameters>

            <asp:Parameter Name="picture1"  />

        </UpdateParameters>

        </asp:SqlDataSource>

    </div>

    </form>

</body>

</html>

   看,在asp.net 2中,就是这么简单,用了一个gridview,展示了该表中的字段,以及用<image>控件,也把数据库的图也展示出来了。而且还可以象asp.net 1.1那样,用了模版列,其中有更新,编辑,取消等功能。当编辑某一行时,注意:

<EditItemTemplate>

                    <asp:FileUpload ID="FileUpload1" runat="server" />

                 </EditItemTemplate>

其中包含了文件上传的控件。而在gridviewupdating事件中,首先将上传的文件保存到磁盘中,然后,

SqlDataSource1.UpdateParameters["picture1"].DefaultValue = "d://"+fileUpload.FileName;

中,将上传图片的完整路径和文件名传值给sqldatasource的updateparameters的参数集合,再用sqldatasource的updatecommand实现将文件名真正保存到数据库的picture1字段中去。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: