Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.14;
Скачать: CL | DM;

Вниз

Вывод веб странички из BLOB на WebBrowser   Найти похожие ветки 

 
Amateur   (2007-03-23 08:04) [0]

Как вывести содержимое BLOB-поля (файл MHT) на компонент WebBrowser на форме, подскажите пожалуйста! Вывод RTF файлов на RichEdit я делаю следующим образом:


var Bs:TBlobStream;
begin  Bs:=TBlobStream(Form1.Table1.CreateBlobStream(Form1.Table1.FieldByName("TextFile "),bmRead));
RichEdit1.Lines.LoadFromStream(Bs);
Bs.Free;
end;


Есть ли способ таким же образом вывести веб страничку?
Blob -> WebBrowser

Заранее спасибо!


 
Amateur   (2007-03-23 12:03) [1]

Видел предложения сохранять страничку из блоб в файл, а потом юзать Navigate и открывать с жесткого диска, но считаю это плохим решением. Может кто-нибудь подскажет как используя потоки загрузить из блоба страничку в TWebBrowser?


 
Плохиш ©   (2007-03-23 12:08) [2]

http://www.swissdelphicenter.ch/de/showcode.php?id=1096


 
Johnmen ©   (2007-03-23 12:17) [3]

Вот, что в моём факе
(WebBrowser1.DefaultInterface.Document as IPersistStreamInit).Load
(TStreamAdapter.Create(TBlobStream.Create(BiolifeTable.FieldByName("Notes")
as TBlobField, bmRead), soOwned));


 
Amateur   (2007-03-23 12:17) [4]

Так если я правильно понял там приведен пример как загрузить HTML код из строковой переменной в WebBrowser. А как разобраться с загрузкой из Blob? У меня база данных с сохраненными веб страницами в MHT-формате, пользователь переходит по записям в гриде а рядом в WebBrowser должно отображается соответствующее BloB поле... Вот это не могу реализовать. Памагите ))


 
Johnmen ©   (2007-03-23 12:18) [5]


>  в MHT-формате

Что за формат?


 
Amateur   (2007-03-23 12:22) [6]

ну сжатые странички, где картинки и прочее в одном файле... стандартный формат, в IE есть сохранение в нем...


 
Amateur   (2007-03-23 12:25) [7]

эх чтото ошибку код ваш дает ((
raised exception class EInvalidCast with message "invalid class typecast"
в чем тут может быть дело? не подскажете?


 
Johnmen ©   (2007-03-23 12:55) [8]

Да я уже не помню подробностей, но у меня всё работало на тестовых испытаниях проекта, но было принято решение о загрузке из файла. Это оказалось проще и понятней без видимого проигрыша в скорости...


 
Amateur   (2007-03-23 13:22) [9]

Johnmen, а если файлы в блобе, скажем, по 200-500кб не будет ощущаться постоянная-запись чтение на диск? Если действительно не заметна разница, я конечно попробую этот вариант. Спасибо за советы!


 
Johnmen ©   (2007-03-23 13:58) [10]


> а если файлы в блобе, скажем, по 200-500кб не будет ощущаться
> постоянная-запись чтение на диск?

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


 
Amateur   (2007-03-23 14:07) [11]

Это страницы в mht там же в 1-м файле все включая картинки со страницы, поэтому и большие. А скорость - просмотр пользователем, пролистывание базы. Ну попробую еще, надеюсь хватит скорости.


 
Плохиш ©   (2007-03-23 17:05) [12]


> Amateur   (23.03.07 14:07) [11]

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


 
Amateur   (2007-03-27 10:07) [13]

Реализовал все через временные файлы на диске - из Blob поля файлик на жесткий диск -> c:\123.mht, затем WebBrawser.Navigate(""c:\123.mht) Все работает, но всетаки хочу сделать через потоки, разобраться, понять для себя... Мастера, может быть кто-то делал подобное, подскажите пожалуйста...

Задача сводится к следующему - есть переменная Bs: TBlobStream, в ней сидит один файлик *.html или *.mht, надо загрузить его в компонент на форме WebBrowser1. Помогите, замучался уже :/


 
ЮЮ ©   (2007-03-27 10:35) [14]

WebBrowser-у, как и TImage, например, для загрузки файла важно его расширение, анализирую которое он создает те или иные объекты для загрузки информации. Переименуй mht в html, txt или что другое и уже Explorer, сам же создавший этот файл, не сможет его открыть. Поэтому, ИМХО, не зная внутренностей Explorera заставить его загрузить из Stream-а будет невозможно. Или нужно вызывать не универсальный, а специфичный, для multi-part message in MIME format, метод загрузки, если он есть


 
Amateur   (2007-03-27 10:53) [15]

С расширениями примерно понятно, но выше вот примерчик любопытный есть:

(WebBrowser1.DefaultInterface.Document as IPersistStreamInit).Load
(TStreamAdapter.Create(TBlobStream.Create(BiolifeTable.FieldByName("Notes")
as TBlobField, bmRead), soOwned));


Говорят работал...

Не могли бы вы написать пару строк как из TBlobStream грузить в TwebBrowser? Не знаю что из этого выйдет хочу просто поэкспериментировать. Просто у TWebBrowser я не нашел чтото вроде LoadFromStream, как вообще к нему подобраться к загрузке в браузер из потоков, подскажите?


 
ЮЮ ©   (2007-03-27 11:40) [16]

В приведенном примерчике, как раз, и грузится из Blob-поля.
Осталось только вместо BiolifeTable.FieldByName("Notes") поставить твоё Blob-поле.

З.Ы. Только это касается HTML-кода. Переименуй mht в html и убедись, что IE загрузит его не так, как ты ожидал. Отчего тогда он из Stream-а загрузит правильно?

Може покопать в сторону "X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3028", который участвовал в создании и, наверняка, участвует в "распаковке" mht фвйла?


 
Amateur   (2007-03-27 13:38) [17]

Если кому нужно нашел решение, немного корявое, но работает. Mht файлы прямо из блоб в Webbrowser.

http://groups.yahoo.com/group/delphi-webbrowser/files/

Правда регистрацию нудную надо пройти чтобы скачать...
Файл с примером там - load_mht_from_stream_and_memo.zip


 
timus   (2007-03-27 15:15) [18]

Пример c yahoo у меня не работает.

Mht открывает коряво (показывает поля content-type и т.п.) такое впечатление что mime не до конца разбирает. Если тот же файл показывать  через Navigate все работает. В Msdn есть статья где написано как IE определяет тип содержимого, так вот там первый пункт: расширение имени файла. Пробовал добавлять имя файла в url ничего не меняется :(


 
pasha che ©   (2007-04-10 12:12) [19]

У меня получилось так (правда, не с delphi, а с asp-скриптом, но сути не меняет):
IE смотрит не на расширение файла, а на HTTP-заголовок.
Надо чтобы Content-Type: message/rfc822.
В IISе это можно сделать в свойствах либо файла, либо папки (Заголовки HTTP).
В общем, скрипт с расширением .asp, выдающий из БД поле, в котором содержится mht данные, отображается как надо :)


 
mif007 ©   (2007-06-07 14:56) [20]

Таже проблема, из перечисленных методов ничего не помогает :(
Кто нашел решение - поделитесь plizzzz



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

Текущий архив: 2007.10.14;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.029 c
2-1189572995
Mariya
2007-09-12 08:56
2007.10.14
Подскажите в чем ошибка?


2-1189856345
Виктор007
2007-09-15 15:39
2007.10.14
Указатель на метод класса


11-1173789560
Dmitriy___
2007-03-13 15:39
2007.10.14
Копирование Юникода в буфер


15-1189683406
Константин Батькович
2007-09-13 15:36
2007.10.14
Как удалить установленный MUI? (русский пак для WinXP)


6-1171694995
Snakecatcher
2007-02-17 09:49
2007.10.14
idUDP