C# 通过asp.net中的.ashx访问本地映像

C# 通过asp.net中的.ashx访问本地映像,c#,asp.net,sql,C#,Asp.net,Sql,我正在使用ashx文件从数据库中检索图像。 如果它在数据库中不可用,它将显示我的 项目文件夹。但我无法访问本地图像。 有人能帮我或给我一些建议吗 我的代码: public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain"; string Value = (string)context.Session["UserID"]; Stream strm

我正在使用ashx文件从数据库中检索图像。 如果它在数据库中不可用,它将显示我的 项目文件夹。但我无法访问本地图像。 有人能帮我或给我一些建议吗

我的代码:

public void ProcessRequest (HttpContext context) 
{
    context.Response.ContentType = "text/plain";
    string Value = (string)context.Session["UserID"];
    Stream strm = ShowEmpImage(Value);
    if (strm == null)
    {
        byte[] imageBytes = File.ReadAllBytes("~/images/photo_not_available.png" + context.Request["image"]);
        context.Response.ContentType = "image/png";
        context.Response.BinaryWrite(imageBytes);          
    }
    else
    {
        byte[] buffer = new byte[4096];
        int byteSeq = strm.Read(buffer, 0, 4096);

        while (byteSeq > 0)
        {
            context.Response.OutputStream.Write(buffer, 0, byteSeq);
            byteSeq = strm.Read(buffer, 0, 4096);
        }
    }   
   //context.Response.BinaryWrite(buffer);
}
你能用这个方法吗

你能用这个方法吗


为了确保您在这里有一个bug,您可以在图像文件名上添加一个变量-这是为了确保一个不存在的文件

byte[] imageBytes = 
File.ReadAllBytes("~/images/photo_not_available.png" + context.Request["image"]);
这里的第二个错误是,您没有将~

    byte[] imageBytes = File.ReadAllBytes(
content.Request.MapPath("~/images/photo_not_available.png"));
或者你可以称之为@zapthedingbat

还有一个问题,你从

 context.Response.ContentType = "text/plain";
然后你把它改成

context.Response.ContentType = "image/png";

为了确保您在这里有一个bug,您可以在图像文件名上添加一个变量-这是为了确保一个不存在的文件

byte[] imageBytes = 
File.ReadAllBytes("~/images/photo_not_available.png" + context.Request["image"]);
这里的第二个错误是,您没有将~

    byte[] imageBytes = File.ReadAllBytes(
content.Request.MapPath("~/images/photo_not_available.png"));
或者你可以称之为@zapthedingbat

还有一个问题,你从

 context.Response.ContentType = "text/plain";
然后你把它改成

context.Response.ContentType = "image/png";

感谢您的回复。但它显示了错误,如“名称‘服务器’在当前上下文中不存在”@santossahu使用context.Responce.TransmitFile调用它不要等待其他人解决所有问题,开始思考您的代码。感谢您的回复。但它显示了错误,如“名称‘服务器’在当前上下文中不存在”@Santossahu使用context.response.TransmitFile调用它不要等待其他人解决所有问题,开始思考您的代码。感谢您的快速响应。但是我试过这个东西,但是它显示“找不到路径'C:\Program Files\Common Files\MicrosoftShared\DevServer\10.0\~\images\photo\u not\u available.png'的一部分”。@Santossahu是正确的,因为你使用了符号~但是这个函数没有修复路径-这是第二个错误。Thanx朋友,谢谢你的帮助。是的,它没有显示任何错误。但是我的图像没有显示在aspx页面中。你能告诉我哪里出了这个错误吗?@Santossahu试试zapthedingbat方法,如果不起作用,我会直接给你写一些代码,也可以从一开始就删除文本/纯文本。谢谢你的快速回复。但是我试过这个东西,但是它显示“找不到路径'C:\Program Files\Common Files\MicrosoftShared\DevServer\10.0\~\images\photo\u not\u available.png'的一部分”。@Santossahu是正确的,因为你使用了符号~但是这个函数没有修复路径-这是第二个错误。Thanx朋友,谢谢你的帮助。是的,它没有显示任何错误。但是我的图像没有显示在aspx页面中。你能告诉我哪里出了这个错误吗?@Santossahu试试zapthedingbat方法,如果不起作用,我会直接给你写一些代码,同时从起点删除text/plain。