Отображение изображения из базы данных в ASP.net с C # - PullRequest
3 голосов
/ 08 августа 2011

Я знаю, что такого рода вопросы задавались много раз.Пока что мне не удается отобразить изображение из моей базы данных на странице.

Я попробовал следующий метод.

    protected void Page_Load(object sender, EventArgs e)
    {
        //Get the picture id by url
        //Query here
        byte[] picture = queryoutput;
        Response.ContentType = "image/jpeg";
        Response.BinaryWrite(picture);
    }

Ссылка для получения изображения.

<asp:Image runat="server" ImageUrl="~/givememypicture.aspx?pic=3" ID="testimage" />

Тег <asp:Image /> находится между тегами <asp:Content >.

Когда я запускаю этот код и проверяю в firebug, он просто заявляет: «Не удалось загрузить Fiven URL».Я также пытался поместить часть Respone.Con...(picture); в публичный метод и вызывать этот метод с указанным байтовым аргументом.

Я довольно новичок в asp.net, но у меня немного больше опыта в c #.Я начинаю по-настоящему не любить asp.net ... Я боролся с этим уже около 20 часов и перепробовал множество вариантов, но ни один не работал.

Лучше всего было бы, если бы я мог просто заполнитьизображение через кодовый файл с той же страницы.Мне кажется совершенно нелогичным вызывать другую страницу для загрузки изображения.

Может кто-нибудь сказать мне, что я здесь не так делаю?

Решение: Мастерссылка на страницу удалена из директивы page на странице, которая обрабатывает ответ изображения.Также удалил все остальное, кроме самой директивы @page в файле aspx.

Ответы [ 4 ]

6 голосов
/ 08 августа 2011

попробуйте использовать файл обработчика (.ashx), поместите код из вашей page_load в эту ложь, чтобы

public void ProcessRequest (HttpContext context) {
    //Get the picture id by url
        //Query here
        byte[] picture = queryoutput;
        Response.ContentType = "images/jpeg";
        Response.BinaryWrite(picture);
    }

    public bool IsReusable {
    get {
        return false;
    }
    }

, затем вызвали файл обработчика и передали правильные элементы строки запроса из

это должно тогда работать

5 голосов
/ 08 августа 2011

В вашем пути указана ошибка ...

ImageUrl="/~givememypicture.aspx?pic=3"

должно быть:

ImageUrl="~/givememypicture.aspx?pic=3"

~ является сокращением для "корня приложения" и должно сопровождатьсякосой чертой, чтобы указать, что это каталог.Думайте об этом как о других обозначениях пути, таких как . и ...

0 голосов
/ 08 августа 2011

Я делаю это все время. Вот пример кода:

Response.ContentType = "image / jpeg"; Response.BinaryWrite (байт);

Вот и все, что нужно. Если это не работает, значит, что-то не так с вашими данными.

Промывка не требуется. У меня есть рабочий код для этого на моем экране прямо сейчас.

Я бы посоветовал вам попробовать записать этот буфер данных в файл и посмотреть, открывается ли он в качестве действительного изображения. Держу пари, что с этими данными что-то не так.

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

http://edn.embarcadero.com/article/38123

0 голосов
/ 08 августа 2011

Убедитесь, что вы вызываете Response.Flush ();а также Response.End ();и посмотрите, поможет ли это

Кроме того, ваш тип контента содержит неправильную орфографию.Это не «images / jpgeg» Я думаю, что это «image / jpeg»

РЕДАКТИРОВАТЬ: Да, я только что подтвердил в Википедии , что правильный тип контента является изображение/ JPEG.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...