我编写了一个处理程序,它从显示的数据库中返回一个imaage。我想要一系列与特定图像相关的图像。如果图像“A与图像有关”B“,”C“和”D“,我想要由http处理程序返回A,B,C和D图像。这样我就可以在网络上显示图像如何返回图像数组或图像列表?
这是我的处理程序代码。
<%@ WebHandler Language="C#" Class="DisplayImg" %>
using System;
using System.Web;
using System.Configuration;
using System.IO;
using System.Data;
using System.Data.SqlClient;
public class DisplayImg : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string theID;
if (context.Request.QueryString["id"] != null)
theID = context.Request.QueryString["id"].ToString();
else
throw new ArgumentException("No parameter specified");
context.Response.ContentType = "image/jpeg";
Stream strm = DisplayImage(theID);
byte[] buffer = new byte[2048];
int byteSeq = strm.Read(buffer, 0, 2048);
while (byteSeq > 0)
{
context.Response.OutputStream.Write(buffer, 0, byteSeq);
byteSeq = strm.Read(buffer, 0, 2048);
}
}
public Stream DisplayImage(string theID)
{
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["SERVER"].ConnectionString.ToString());
string sql = "SELECT Server_image_icon FROM tbl_ServerMaster WHERE server_Code = @ID";
SqlCommand cmd = new SqlCommand(sql, connection);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@ID", theID);
connection.Open();
object theImg = cmd.ExecuteScalar();
try
{
return new MemoryStream((byte[])theImg);
}
catch
{
return null;
}
finally
{
connection.Close();
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
答案 0 :(得分:0)
您无法在单个httphandler中执行此操作,因为您返回的是字节流。您可以通过以下两个步骤完成此操作:
1)编写一个新的httphandler,它返回一个相关的图像URL列表。
2)使上述URL指向您的DisplayImg处理程序。
浏览器将呈现您的第一个处理程序的结果,然后它将使用您的第二个处理程序(DisplayImg)获取每个图像。