asp.net 2中的图片上传
??? BETA 2出來了,暫時還沒得到,因此還是用BETA 1研究。在asp.net 2中,如何實(shí)現(xiàn)圖片的上傳展示呢?下面,我用GRIDVIEW搭配文件上傳功能進(jìn)行實(shí)現(xiàn)(而實(shí)現(xiàn)文件上傳的原理大致一樣)。在ASP。NET 2中,GRIDVIEW十分方便了,在做編輯,更新,取消時,比.net 1.1寫的代碼更加少了。下面舉例子說明,我使用的是northwind數(shù)據(jù)庫的category表,其中沒使用picture字段,因?yàn)樗荌MAGE類型的,不想破壞這個表的結(jié)構(gòu),因此添加了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>控件,也把數(shù)據(jù)庫的圖也展示出來了。而且還可以象asp.net 1.1那樣,用了模版列,其中有更新,編輯,取消等功能。當(dāng)編輯某一行時,注意:
<EditItemTemplate>
??????????????????? <asp:FileUpload ID="FileUpload1" runat="server" />
???????????????? </EditItemTemplate>
其中包含了文件上傳的控件。而在gridviewupdating事件中,首先將上傳的文件保存到磁盤中,然后,
SqlDataSource1.UpdateParameters["picture1"].DefaultValue = "d:\\"+fileUpload.FileName;
中,將上傳圖片的完整路徑和文件名傳值給sqldatasource的updateparameters的參數(shù)集合,再用sqldatasource的updatecommand實(shí)現(xiàn)將文件名真正保存到數(shù)據(jù)庫的picture1字段中去。
總結(jié)
以上是生活随笔為你收集整理的asp.net 2中的图片上传的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 雷总果然不坑中国人 小米13 Lite价
- 下一篇: 过去十年美国12000次火车脱轨!现场实