Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Вниз

idHTTPServer - ARespoceInfo в OnCommandGet   Найти похожие ветки 

 
BFG9k ©   (2006-08-25 19:41) [0]

Имеется шаблон HTML документа, в котором надо изменить некоторые специализированные теги. Использую PageProducer + idHTTPServer. Без использования PageProducer"а все работает корректно:


procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
 ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var FS:TFileStream;
begin
 FS:=TFileStream.Create    (WWW_ROOT+ARequestInfo.Document,fmOpenRead);

 AResponseInfo.ContentStream:=FS
end;


При использовании PageProducer"а в документе не выводятся картинки :


procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
 ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var FS:TFileStream;
begin
 FS:=TFileStream.Create    (WWW_ROOT+ARequestInfo.Document,fmOpenRead);

 AResponseInfo.ContentText:=PageProducer1.ContentFromStream(FS);
end;


Вообще картинки не выводятся в любом случае, если присваивается AResponseInfo.ContentText.
Вопрос: почему так происходит и что можно сделать ?


 
Орион ©   (2006-08-26 18:09) [1]

> Вопрос: почему так происходит и что можно сделать ?
Почему не знаю, а сделать можно следующее:

procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
FileStream: TFileStream;
Data: TStringStream;
begin
FileStream:=TFileStream.Create(WWW_ROOT+ARequestInfo.Document, fmOpenRead);
Data:=TStringStream.Create(PageProducer1.ContentFromStream(FileStream));
AResponseInfo.ContentStream:=Data;
Data.Free;
FileStream.Free;
end;


 
Slym ©   (2006-08-28 04:51) [2]

НЕ ДЕЛАЙ ТАК!!!
WWW_ROOT+ARequestInfo.Document
это грозит вот этим!!!:
ARequestInfo.Document:="..\..\..\WINDOWS\system32\config\system.sav";


 
Slym ©   (2006-08-28 05:18) [3]

Должно быть типа так:
procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
FileName:string;
FileStream: TFileStream;
Data: TStringStream;
begin
//Например так
FileName:=Проверяем_имя_файла(ARequestInfo.Document);
FileStream:=TFileStream.Create(WWW_ROOT+FileName, fmOpenRead);
try
Data:=TStringStream.Create(PageProducer1.ContentFromStream(FileStream));
try
AResponseInfo.ContentStream:=Data;
AResponseInfo.WriteContent;
finally
Data.Free;
end;
finally
FileStream.Free;
end;
end;



 
Орион ©   (2006-08-28 12:08) [4]

> [3] Slym ©   (28.08.06 05:18)

WriteHeaders забыл))


 
Slym ©   (2006-08-28 12:40) [5]

Орион ©   (28.08.06 12:08) [4]
Но инди помнит :)


 
BFG9k ©   (2006-08-28 15:27) [6]

Спасибо, все работает. Но почему то при попытках уничтожить потоки ( Data.Free и FileStream.Free) происходит Access Violation.


 
BFG9k ©   (2006-08-28 16:41) [7]

Нашел.
В AResponseInfo.WriteContent происходит уничтожение потока



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.051 c
2-1169369909
Strate
2007-01-21 11:58
2007.02.04
Автосоздание объекта


1-1165062961
kernel
2006-12-02 15:36
2007.02.04
Canvas&Desktop


2-1169034700
AlexT1000
2007-01-17 14:51
2007.02.04
Как восстановить файл(ы) из корзины?


15-1168412476
Rouse_
2007-01-10 10:01
2007.02.04
Хех, Твой ник по японски :)


2-1168720527
Beavercrazy
2007-01-13 23:35
2007.02.04
Ошибка: не могу найти строку для обновления





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский