Доступ к локальному изображению через .ashx в asp.net - PullRequest
0 голосов
/ 27 января 2012

Я использую файл 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);
}

ThnnQ

Ответы [ 2 ]

2 голосов
/ 27 января 2012

Конечно, у вас есть ошибка здесь, вы добавляете в имя файла изображения еще одну переменную - это наверняка создаст несуществующий файл.

byte[] imageBytes = 
File.ReadAllBytes("~/images/photo_not_available.png" + context.Request["image"]);

Вторая ошибка здесь заключается в том, что вы делаетене делайте MapPath вашего ~

    byte[] imageBytes = File.ReadAllBytes(
content.Request.MapPath("~/images/photo_not_available.png"));

Или вы можете назвать его как @zapthedingbat предложить.

Еще одна проблема, вы начинаете с

 context.Response.ContentType = "text/plain";

, а затем выизмените его на

context.Response.ContentType = "image/png";
1 голос
/ 27 января 2012

Не могли бы вы использовать HttpResponse.TransmitFile метод

Response.TransmitFile(context.Request.MapPath("~/images/photo_not_available.png"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...