Текущий архив: 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.49 MB
Время: 0.037 c