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

Вниз

Вывод веб странички из 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.049 c
15-1189831668
Aller
2007-09-15 08:47
2007.10.14
порты в freebsd


15-1189611670
StasFomin
2007-09-12 19:41
2007.10.14
TListView с сортировкой


15-1189770684
NeedForHelpAlways
2007-09-14 15:51
2007.10.14
Как сделать словарь терминов?


1-1185960673
monkeyboy
2007-08-01 13:31
2007.10.14
Emuneration для индексов массива в Delphi: перевод на С++


2-1189961373
aha
2007-09-16 20:49
2007.10.14
Можно ли изменить цвет шрифта некоторых ячеек





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский