Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как подгружать картинки в страницу, которую генерит TСPServer?


Страницы:   1 2 3

arche ©   (2003-10-27 09:25:00) 

Я создал простой сервер на TTCPServer, который у меня нормально отдает HTML документ, но есть такая проблема: как подгружать в этот документ картинки и т.п., т.е. где надо указать путь ассоциированный с localhost, откуда эти картинки бы подгружались?


Reindeer Moss Eater   (2003-10-29 10:27:00) [21]

Вот тебе хороший совет:

Поймай момент прихода запроса от клиента на катинку
и выведи в лог содержимое текущего каталога в этот момент.


Reindeer Moss Eater   (2003-10-29 10:24:00) [22]

И ничего он не запрашивает и в явном виде и не должен запрашивать!

Не кури больше.


Reindeer Moss Eater   (2003-10-29 10:23:00) [23]

Тогда бред пишешь ты:

3. Больше я никаких дополнительных запросов к моему TCPServer от клиента не наблюдаю! (у меня все в лог пишется).


arche   (2003-10-29 10:19:00) [24]

что за бред? Как я скажу Internet Explorer"у что бы он еще запросил и картинку?? Глупости..

Я же говорю, если прописать путь <img src="F:\a.gif" />, то все показывается! И ничего он не запрашивает и в явном виде и не должен запрашивать!

Кто-нибудь, помогите конкретным советом!


Reindeer Moss Eater   (2003-10-29 09:58:00) [25]

Больше я никаких дополнительных запросов к моему TCPServer от клиента не наблюдаю!

Чего же ты хочешь?
Чтобы клиент получил картинку сервера, он её должен попросить у сервера.


arche   (2003-10-29 09:43:00) [26]

Давай разбираться.
Я понимаю работу своего сервера так:

1. От клиента приходит запрос с хедерами:


HTTP 1/1 ..
...


и т.д.

2. Я в сервере обрабатываю URL, и отдаю клиенту html:


ClientSocket.SendLn("HTTP 1/1 200");
...
ClientSocket.SendLn("<html>.... </html>");
...


3. Больше я никаких дополнительных запросов к моему TCPServer от клиента не наблюдаю! (у меня все в лог пишется).

4. Где я ошибаюся? Клиент запрашивает картинку уже не от моего сервера что-ли? Как конкретно решить проблему?


Reindeer Moss Eater   (2003-10-29 09:22:00) [27]

Следи за движением руки:

Браузер запросил у твоего сервера некий URL.
Твой сервер составил HTML документ со ссылкой на GIF и отдал его клиенту.
Браузер клиента настроен на показ графики. Поэтому он извлекает из полученного документа ссылку и передает её твоему серверу(второй URL).
Процесс твоего сервер ищет в своем текущем каталоге файл "a.gif" и не находит.

Вопросы:
1. Почему сервер вписывает в HTML документ ссылку на файл, которую потом он сам же не может найти?

2. Что мешает твоему серверу обработать неправильную ссылку на файл и прочитать его оттуда, где он лежит на самом деле?


arche   (2003-10-29 09:11:00) [28]

to: Reindeer Moss Eater

Ты по-моему изначально не правильно меня понял.
дело в том, что если прописать полный путь к картинке так:

<img src="F:\a.gif" />

то картинка показывается!
Но я хочу, чтобы картинка показывалась при таком написании:

<img src="a.gif" />

Как это сделать?


Reindeer Moss Eater   (2003-10-29 09:05:00) [29]

ну типа директория устанавливается, а картинка не показывается,

Если начать думать, то скоро станет ясно, что "картинка не показывается" - это из области проблем клиента, а не сервера (ибо сервер картинки не показывает, он их отдает по запросу клиента).

Ты же в настоящее время точишь код своего сервера.
Попробуй ответить на такой вопро:с "А браузер вообще-то запрашивал у сервера эту картинку?"


arche   (2003-10-28 20:24:00) [30]

А вот и не работает нифига... :(
Пишу значит:


if SetCurrentDir("F:\") then
...
else
ShowMessage("Can`t set current directory!");
end;


ну типа директория устанавливается, а картинка не показывается,
а путь к картинке такой: "F:\a.gif"
А html код для картинки: <img src="a.gif"/>
и не показывается. Что делать?


arche   (2003-10-27 11:18:00) [31]

Спасибо, это все, что я хотел узнать, вечером поэкспериментирую.


Gawk   (2003-10-27 11:01:00) [32]


> А как и где его установить? Вот в чем суть вопроса.

function SetCurrentDir(const Dir: string): Boolean;


Reindeer Moss Eater   (2003-10-27 11:01:00) [33]

А как и где его установить?

Как - SetCurrentDir
Где - в коде твоего веб сервера. Например сразу после его запуска.


arche   (2003-10-27 10:56:00) [34]

1. Ты сказал:
устанавливай текущий каталог для процесса веб-сервера

После чего я задал тебе конкретный вопрос:
А как и где его установить?

Мне нужен ответ на этот вопрос.

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

Ладно, допустим я ничего не понимаю. Тогда пожалуйста популярно объясни, как эта картинка в итоге попадает в браузер клиента?


Reindeer Moss Eater   (2003-10-27 10:40:00) [35]

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


Reindeer Moss Eater   (2003-10-27 10:37:00) [36]

Это не суть вопроса.
Это твое желание и больше ничего.
Не хочешь устанавливать - используй каталог из которого запущен веб-сервер


arche   (2003-10-27 10:27:00) [37]

устанавливай текущий каталог для процесса веб-сервера

А как и где его установить? Вот в чем суть вопроса.


Reindeer Moss Eater   (2003-10-27 10:22:00) [38]

Ну так мне самому и нужно узнать куда класть рисунки
Где удобно, туда и складывай.
Что бы работало без дополнительной обработки путей - устанавливай текущий каталог для процесса веб-сервера и пляши от него.


arche   (2003-10-27 10:18:00) [39]

Ну так мне самому и нужно узнать куда класть рисунки, т.е. где программно прописать root, к которому клиенту за рисунком лезть?
т.е. как прописать этот Root?
Как это делают все обычные сервера? Мы прописываем в конфиге путь к рутовой директории, а в html документе пишем уже путь от этого корня.
Так как и где для моего случая программно прописать этот путь к корню (к какой-нить определенной папке на диске)?


Reindeer Moss Eater   (2003-10-27 10:14:00) [40]

Так откуда этот путь (/img/pic.gif) будет читаться на компе?

Этот путь придет обратно с клиента на сервер (если браузер клиента закачивает картинки).

И серверу никто не мешает отдать картинку из
/img/pic.gif
или
"/совсем другой каталог/pic.gif"


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо