使用ashx处理程序显示图像

7
我在我的 aspx 页面中有以下图片。
<td>
 <asp:Image ID="LargeImage" runat="server" Height="100" Width="100" />" 

</td>

在我的aspx.cs文件中,将一个imageurl分配给这个图片。
protected void uploadimage_Click(object sender, System.EventArgs e)
        {

            ImageUtils.uploadImage(Titletxt.Text, FileUpload.FileContent);
            LargeImage.ImageUrl = "~/AvatarImageFetch.ashx?memberid=" + memberid.ToString();
}

由于某些原因,图片无法显示。这是我的ashx文件。
    public void ProcessRequest(HttpContext context)
        {
            SqlConnection myConnection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["FMMImages"].ConnectionString);

            myConnection.Open();
            string sql = "select largeimage from images_temp where id=@memberid";
            SqlCommand cmd = new SqlCommand(sql, myConnection);
            int param;
            int.TryParse(context.Request.QueryString["memberid"], out param);
            cmd.Parameters.Add("@memberid", SqlDbType.Int).Value = param;
            //cmd.Parameters.Add("@GuID", SqlDbType.UniqueIdentifier).Value = context.Request.QueryString["UID"].ToString();

            cmd.CommandType = System.Data.CommandType.Text;

            SqlDataReader dReader = cmd.ExecuteReader();
            dReader.Read();
            context.Response.BinaryWrite((byte[])dReader["largeimage"]);
            dReader.Close();
            myConnection.Close();


        }

另外,在ashx处理程序中我设置了一个断点。看起来处理程序没有被触发。


这是在ashx文件本身中还是在代码后面(即ashx.cs文件)中? - Richard
3个回答

8

6
在您的ProcessRequest方法中尝试以下操作:
context.Response.ContentType = "image";

using (System.IO.MemoryStream str = new System.IO.MemoryStream(objData.ToArray(), true))
{
       str.Write(objData.ToArray(), 0, objData.ToArray().Length);
       Byte[] bytes = str.ToArray();
       context.Response.BinaryWrite(bytes);
}

objData是你从数据库中读取的值


1

ImageUrl 只替换控件标记中的波浪线(~)。

请尝试使用以下方法:

string imageUrl = "~/AvatarImageFetch.ashx?memberid=" + memberid.ToString();
LargeImage.ImageUrl = Page.ResolveUrl(imageUrl);

哦,你还需要上下文.Response.ContentType = "image" 部分。 - Richard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接