asp.net数据库里存照片/ASP.NET存取 SQLServer数据库图片的简单方法

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控件,进行数据绑定就好了!



保存:  
  (query1.FieldByName('img')   as   TBlobField).LoadFromFile('e:\temp.bmp');  
  取出:  
  (query1.FieldByName('img')   as   TBlobField).Savetofile('e:\temp.bmp');  
  试试,应该能保存比较大的图的。

你可能感兴趣的:(sqlserver)