代码参考自http://blog.joycode.com/liuhuimiao/archive/2005/06/03/52554.aspx?Pending=true
1
<%@ WebHandler Language="C#" Class="Handler" %>
2![](/Images/OutliningIndicators/None.gif)
3
using System;
4
using System.IO;
5
using System.Web;
6![](/Images/OutliningIndicators/None.gif)
7
public class Handler : IHttpHandler {
8![](/Images/OutliningIndicators/InBlock.gif)
9
public bool IsReusable {
10
get {
11
return true;
12
}
13
}
14
15
public void ProcessRequest (HttpContext context) {
16
// Set up the response settings
17
context.Response.ContentType = "image/jpeg";
18
context.Response.Cache.SetCacheability(HttpCacheability.Public);
19
context.Response.BufferOutput = false;
20
21
22
// Setup the PhotoID Parameter
23
Int32 id = -1;
24
Stream stream = null;
25
if (context.Request.QueryString["PhotoID"] != null && context.Request.QueryString["PhotoID"] != "") {
26
id = Convert.ToInt32(context.Request.QueryString["PhotoID"]);
27
stream = (GetPhoto(id));
28
} else {
29
return ;
30
}
31
// Write image stream to the response stream
32
const int buffersize = 1024 * 16;
33
byte[] buffer = new byte[buffersize];
34
int count = stream.Read(buffer, 0, buffersize);
35
while (count > 0) {
36
context.Response.OutputStream.Write(buffer, 0, count);
37
count = stream.Read(buffer, 0, buffersize);
38
}
39
}
40
public Stream GetPhoto(int photoId)
41
{
42
SqlConnection myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["Personal"].ConnectionString);
43
SqlCommand myCommand = new SqlCommand("SELECT [Photo] FROM [Employees] WHERE [EmployeeID]=@EmployeeID",myConnection);
44
myCommand.CommandType = CommandType.Text;
45
myCommand.Parameters.Add(new SqlParameter("@EmployeeID", photoId));
46
myConnection.Open();
47
object result = myCommand.ExecuteScalar();
48![](/Images/OutliningIndicators/InBlock.gif)
49
try
50
{
51
return new MemoryStream((byte[])result);
52
}
53
catch (ArgumentNullException e)
54
{
55
return null;
56
}
57
finally
58
{
59
myConnection.Close();
60
}
61
}
62![](/Images/OutliningIndicators/InBlock.gif)
63
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
10
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
13
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
39
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
61
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)