[нуб] а как вернуть картинку?

Программирование Web-приложений и Web-сервисов.

Модератор: Ramzes

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

[нуб] а как вернуть картинку?

Сообщение tyomitch » 29.11.2005 (Вт) 13:01

Потыкав наугад в разные кнопки в среде, я сделал вывод, что ASP.net позволяет возвращать только HTML-страницы.
В какую кнопку я не догадался ткнуть?
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.06.2006 (Чт) 14:53

поскольку поиском я не пользовался, то чтобы не обманывать Хитрый Скрипт, я не стал создавать новую тему, а воспользовался старой =)
Изображение

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 15.06.2006 (Чт) 22:29

Не понял, что ты имеешь ввиду, но тебе через Response доступен поток - выводи все, что пожелаешь. Или, например, Response.WriteFile() используй.
Если хочешь картинки из базы выдавать, тогда создай IHttpModule :)
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.06.2006 (Чт) 22:33

gaidar, я на ASP.net ещё только Hello World написал, да и тот по указкам из книжки Аппельмана :-)

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

И как создавать IHttpModule?
Изображение

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 16.06.2006 (Пт) 10:08

tyomitch

VBStreets Framework посмотри... ConfirmationImage в частности.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.06.2006 (Пт) 10:27

Sebas, а что-нибудь попроще можно? желательно, с инструкцией по созданию такого же :-)
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.06.2006 (Пн) 23:13

Всё, теперь меня, наверное, можно считать посвящённым в эту гадюку.нет :-D

http://tyomitch.ru-inet.com/MyPicture.aspx
Изображение

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 20.06.2006 (Вт) 9:28

Супер!

Напишу, как сделать http module тогда :)

Добавляем класс, раеализующий IHttpModule:

Код: Выделить всё
Imports Microsoft.VisualBasic
Imports System.Io

Public Class ImageHandler
    Implements IHttpHandler


    Public ReadOnly Property IsReusable() As Boolean Implements System.Web.IHttpHandler.IsReusable
        Get
            Return True
        End Get
    End Property

    Public Sub ProcessRequest(ByVal context As System.Web.HttpContext) Implements System.Web.IHttpHandler.ProcessRequest
        Dim b() As Byte
        b = File.ReadAllBytes(context.Server.MapPath("~/logo.gif"))
        context.Response.AddHeader("content-type", "image/gif")
        context.Response.OutputStream.Write(b, 0, b.Length)
    End Sub
End Class



В Web.config пишем:

Код: Выделить всё
<?xml version="1.0"?>
<configuration>

   <system.web>
      <httpHandlers>
         <add type="ImageHandler" verb="*" path="image.gif"/>
      </httpHandlers>
      </system.web>
</configuration>


И теперь при запросе image.gif будет возвращена картинка logo.gif. А можно из базы считать или еще откуда-нибудь.

При работе на IIS нужно "замапить" используемые расширения на ASP.NET и убрать галочку проверки наличия файла, иначе будет 404 возвращаться при обращении к несуществующим файлам.
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 20.06.2006 (Вт) 14:40

gaidar писал(а):Супер!

Думаю, к тому моменту как ты туда посмотрел, там отрисовывалась одна точка? :-D
Это был баг: забыл указать для текста кодировку, и все символы старше тильды обрубались. Осталась одна точка :-D


gaidar писал(а):В Web.config пишем:

Код: Выделить всё
<?xml version="1.0"?>
<configuration>

   <system.web>
      <httpHandlers>
         <add type="ImageHandler" verb="*" path="image.gif"/>
      </httpHandlers>
      </system.web>
</configuration>

Угу, только там нужно было в type ещё и сборку указать ;-)

gaidar писал(а):При работе на IIS нужно "замапить" используемые расширения на ASP.NET и убрать галочку проверки наличия файла, иначе будет 404 возвращаться при обращении к несуществующим файлам.

Как это сделать? Локально стоит Microsoft-IIS/5.0, на хостинге -- 6.0.
Методом тыка не вышло.
Изображение

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 20.06.2006 (Вт) 18:35

Локально делается так:
В пропертях виртуальной директории нажимаешь на Configuration.
Попадаешь на закладку Mappings. Все расширения, которые должны обрабатываться ASP .NET и которых еще нет в списке добавляешь используя Add (интуитивно, да? :) )
Executable: Путь к aspnet_isapi.dll (у меня c:\windows\microsoft.net\framework\v1.1.4322\aspnet_isapi.dll)
Extension: расширение с ведущей точкой.
Verbs по желанию, у меня стоит All
Оставляешь галку Script engine и убираешь Check that file exists.

Удаленно, не знаю как

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 20.06.2006 (Вт) 18:41

Локально уже всё давно сделано, но от этого не легче :-(
Изображение

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 21.06.2006 (Ср) 23:21

На счет указания сборки, если ASP.NET 2.0 и файл лежит в директории App_Code (т.е. динамически компилируется, то сборку указывать не надо).

На хостинге обычно есть инструмент администрирования (на parking.ru например очень неплохой, плюс 14 дней тестовый режим - бесплатно - рекомендую), либо через письмо админу с просьбой "замапить на asp.net все расширения (.*)" :)
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

PUNK-GRUNGER
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 10.06.2004 (Чт) 14:22
Откуда: Украина, Николаев

Сообщение PUNK-GRUNGER » 02.07.2006 (Вс) 17:50

dim colbasa as bitmap ' пикча
colbasa.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
«Каждому программисту ЭВМ выдает то, что он заслуживает» (c)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 02.07.2006 (Вс) 17:52

PUNK-GRUNGER, прежде чем отвечать, лучше было прочитать топик :evil:
Изображение

PUNK-GRUNGER
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 10.06.2004 (Чт) 14:22
Откуда: Украина, Николаев

Сообщение PUNK-GRUNGER » 02.07.2006 (Вс) 17:56

Ну... можно сказать что это слегонца другой способ ))
«Каждому программисту ЭВМ выдает то, что он заслуживает» (c)


Вернуться в ASP.NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList