![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как подгружать картинки в страницу, которую генерит TСPServer?
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"