ASP.NET存取 SQLServer数据库图片可以说是很头痛的问题,而我要做的一个系统恰好要显示用户的照片,555,不同的人的照片肯定不同!哎,没人指导只有靠自己去摸索咯。嘿嘿,经过一天的努力,我终于做把这个问题解决啦。
我在网上搜索了一些相关的内容,方法大致相同,就是把图片以二进制的方法存取,看到那么多代码我头都大了,有没有更简单的方法呢,我问了一下表姐,她是专门搞软件开发的,她说可以把照片放在一个文件夹里面,然后在数据库里调用,具体方法她没说,但有个思路就好了。
我做了两个简单的页面实验了一下:
首先是upfile.aspx页面,用来上传图片的
代码如下:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="upfile.aspx.vb" Inherits="upfile" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://hi.baidu.com/highadmin">
<html xmlns="http://hi.baidu.com/highadmin" >
<head runat="server">
<title>upfile</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="FileUpload1" runat="server" /><br />
<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
<br />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
<br />
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConflictDetection="CompareAllValues"
ConnectionString="<%$ ConnectionStrings:MSISConnectionString %>" InsertCommand="INSERT INTO [Gallery] ([uploadByMemberName], [Notes], [pictureURL]) VALUES (@uploadByMemberName, @Notes, @pictureURL)"
OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT * FROM [Gallery]"
<InsertParameters>
<asp:ControlParameter Name="uploadByMemberName" ControlID="TextBox1" PropertyName="Text" Type="String" />
<asp:ControlParameter Name="Notes" ControlID="TextBox2" PropertyName="Text" Type="String" />
<asp:ControlParameter Name="pictureURL" ControlID="FileUpload1" PropertyName="FileName" Type="String" />
</InsertParameters>
</asp:SqlDataSource>
<br />
<asp:Button ID="Button1" runat="server" Text="Button" /></div>
</form>
</body>
</html>
upfile.aspx.vb的代码如下:
Partial Class upfile
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
If FileUpload1.HasFile Then
Try
FileUpload1.SaveAs("D:\学生信息管理系统\网站\WebSite\images\" & FileUpload1.FileName)
Catch ex As Exception
End Try
SqlDataSource1.Insert()
End If
End Sub
End Class
数据显示的页面做得很简单,用了一个DATALIST控件。
datalist.aspx 代码如下:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="datalist.aspx.vb" Inherits="datalist" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://hi.baidu.com/highadmin">
<html xmlns="http://hi.baidu.com/highadmin" >
<head runat="server">
<title>datalist</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DataList ID="DataList1" runat="server" DataKeyField="PictureID" DataSourceID="SqlDataSource1">
<ItemTemplate>
PictureID:
<asp:Label ID="PictureIDLabel" runat="server" Text='<%# Eval("PictureID") %>'></asp:Label><br />
uploadByMemberName:
<asp:Label ID="uploadByMemberNameLabel" runat="server" Text='<%# Eval("uploadByMemberName") %>'></asp:Label><br />
Notes:
<asp:Label ID="NotesLabel" runat="server" Text='<%# Eval("Notes") %>'></asp:Label><br />
<asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("pictureURL", "~/images/{0}") %>' /><br />
<br />
</ItemTemplate>
</asp:DataList><asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MSISConnectionString %>"
SelectCommand="SELECT * FROM [Gallery]"></asp:SqlDataSource>
</div>
</form>
</body>
</html>
主要原理:把图片上传到一个指定的文件夹里,上传的同时把所上传图片的文件名(非路径,只是文件名)也写进了相关用户的数据库,然后显示图片的时候,在DATALIST里添加一个IMAGIN控件,进行数据绑定就好了!