首先在SQL Server中建立一个图片存储的数库表,ImageData Column为图象二进制数据储存字段
,ImageContentType Column为图象文件类型记录字段,ImageDescription Column为储蓄图
象文件说明字段,ImageSize Column为储存图象文件长度字段,结构如下:
CREATE TABLE [dbo].[ImageStore] (
[ImageID] [int] IDENTITY (1, 1) NOT NULL ,
[ImageData] [image] NULL ,
[ImageContentType] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[ImageDescription] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[ImageSize] [int] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
*/
上传:1.前台页面:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
<table runat="server" width="700" align="left" id="Table1" cellpadding="0" cellspacing="0"
2
border="0">
3
<tr>
4
<td>
5
上传图片(选择你要上传的图片)
6
</td>
7
<td>
8
<input type="file" id="UP_FILE" runat="server" style="width: 320" accept="text/*"
9
name="UP_FILE">
10
</td>
11
</tr>
12
<tr>
13
<td>
14
文件说明(添加上传图片说明,如:作者、出处)
15
</td>
16
<td>
17
<asp:TextBox runat="server" Width="239" ID="txtDescription" />
18
</td>
19
</tr>
20
<tr>
21
<td>
22
<asp:Label runat="server" ID="txtMessage" ForeColor="red" />
23
</td>
24
<td>
25
<asp:Button ID="Button1" runat="server" Width="239" OnClick="Button_Submit" Text="Upload
26![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
27
Image" />
28
</td>
29
</tr>
30
</table> 2.后台代码:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
protected Int32 FileLength = 0; //记录文件长度变量
2![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
protected void Button_Submit(System.Object sender, System.EventArgs e)
4![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
5
HttpPostedFile UpFile = UP_FILE.PostedFile; //HttpPostedFile对象,用于读取图象
6![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
//文件属性
8
FileLength = UpFile.ContentLength; //记录文件长度
9![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
try
{
10
if (FileLength == 0)
11![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ //文件长度为零时
12
txtMessage.Text = "<b>请你选择你要上传的文件</b>";
13
}
14
else
15![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
16
Byte[] FileByteArray = new Byte[FileLength]; //图象文件临时储存Byte数组
17
Stream StreamObject = UpFile.InputStream; //建立数据流对像
18
//读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
19
StreamObject.Read(FileByteArray,0,FileLength);
20![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
//建立SQL Server链接
22
SqlConnection Con = new SqlConnection("Data Source=192.168.138.5;Initial Catalog=IAPDEV2MC;Persist Security Info=True;User ID=sa;password=password");
23
String SqlCmd = "INSERT INTO ImageStore (ImageData, ImageContentType, ImageDescription, ImageSize) valueS (@Image, @ContentType, @ImageDescription, @ImageSize)";
24
SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
25![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
CmdObj.Parameters.Add("@Image",SqlDbType.Binary, FileLength).Value = FileByteArray;
27
CmdObj.Parameters.Add("@ContentType", SqlDbType.VarChar, 50).Value = UpFile.ContentType; //记录文件类型
28
//把其它单表数据记录上传
29
CmdObj.Parameters.Add("@ImageDescription", SqlDbType.VarChar, 200).Value = txtDescription.Text;
30
//记录文件长度,读取时使用
31
CmdObj.Parameters.Add("@ImageSize", SqlDbType.BigInt, 8).Value = UpFile.ContentLength;
32![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
Con.Open();
34
CmdObj.ExecuteNonQuery();
35
Con.Close();
36
txtMessage.Text = "<p><b>OK!你已经成功上传你的图片</b>";//提示上传成功
37
}
38
}
39![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
catch (Exception ex)
{
40
txtMessage.Text = ex.Message.ToString();
41
}
42
} 读取图片:1.前台页面:<img src="ReadImage.aspx?ImgID=1">2.后台代码:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
protected void Page_Load(object sender, EventArgs e)
2![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
3
int ImgID = Convert.ToInt32("1"); //ImgID为图片ID
4![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
//建立数据库链接
6
SqlConnection Con = new SqlConnection("Data Source=192.168.138.5;Initial Catalog=IAPDEV2MC;Persist Security Info=True;User ID=sa;password=password");
7
String SqlCmd = "SELECT * FROM ImageStore WHERE ImageID = @ImageID";
8
SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
9![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
CmdObj.Parameters.Add("@ImageID", SqlDbType.Int).Value = ImgID;
11
Con.Open();
12
SqlDataReader SqlReader = CmdObj.ExecuteReader();
13
SqlReader.Read();
14
Response.ContentType = (string)SqlReader["ImageContentType"];//设定输出文件类型
15
//输出图象文件二进制数制
16
Response.OutputStream.Write((byte[])SqlReader["ImageData"], 0,
17![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
(int)SqlReader["ImageSize"]);
19
Response.End();
20
Con.Close();
21
//很简单吧^_^
22
}这只是一个简单的实例,可以根据需要,自己修改。