![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вывод веб странички из BLOB на WebBrowser
Amateur © (2007-03-23 08:04:00)Как вывести содержимое 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
Заранее спасибо!
mif007 (2007-06-07 14:56:00) [1]Таже проблема, из перечисленных методов ничего не помогает :(
Кто нашел решение - поделитесь plizzzz
pasha che (2007-04-10 12:12:00) [2]У меня получилось так (правда, не с delphi, а с asp-скриптом, но сути не меняет):
IE смотрит не на расширение файла, а на HTTP-заголовок.
Надо чтобы Content-Type: message/rfc822.
В IISе это можно сделать в свойствах либо файла, либо папки (Заголовки HTTP).
В общем, скрипт с расширением .asp, выдающий из БД поле, в котором содержится mht данные, отображается как надо :)
timus (2007-03-27 15:15:00) [3]Пример c yahoo у меня не работает.
Mht открывает коряво (показывает поля content-type и т.п.) такое впечатление что mime не до конца разбирает. Если тот же файл показывать через Navigate все работает. В Msdn есть статья где написано как IE определяет тип содержимого, так вот там первый пункт: расширение имени файла. Пробовал добавлять имя файла в url ничего не меняется :(
Amateur (2007-03-27 13:38:00) [4]Если кому нужно нашел решение, немного корявое, но работает. Mht файлы прямо из блоб в Webbrowser.
http://groups.yahoo.com/group/delphi-webbrowser/files/
Правда регистрацию нудную надо пройти чтобы скачать...
Файл с примером там - load_mht_from_stream_and_memo.zip
ЮЮ (2007-03-27 11:40:00) [5]В приведенном примерчике, как раз, и грузится из Blob-поля.
Осталось только вместо BiolifeTable.FieldByName('Notes') поставить твоё Blob-поле.
З.Ы. Только это касается HTML-кода. Переименуй mht в html и убедись, что IE загрузит его не так, как ты ожидал. Отчего тогда он из Stream-а загрузит правильно?
Може покопать в сторону "X-MimeOLE: Produced By Microsoft MimeOLEV6.00.2900.3028", который участвовал в создании и, наверняка, участвует в "распаковке" mht фвйла?
Amateur (2007-03-27 10:53:00) [6]С расширениями примерно понятно, но выше вот примерчик любопытный есть:
(WebBrowser1.DefaultInterface.Document as IPersistStreamInit).Load
(TStreamAdapter.Create(TBlobStream.Create(BiolifeTable.FieldByName('Notes')
as TBlobField, bmRead), soOwned));
Говорят работал...
Не могли бы вы написать пару строк как из TBlobStream грузить в TwebBrowser? Не знаю что из этого выйдет хочу просто поэкспериментировать. Просто у TWebBrowser я не нашел чтото вроде LoadFromStream, как вообще к нему подобраться к загрузке в браузер из потоков, подскажите?
ЮЮ (2007-03-27 10:35:00) [7]WebBrowser-у, как и TImage, например, для загрузки файла важно его расширение, анализирую которое он создает те или иные объекты для загрузки информации. Переименуй mht в html, txt или что другое и уже Explorer, сам же создавший этот файл, не сможет его открыть. Поэтому, ИМХО, не зная внутренностей Explorera заставить его загрузить из Stream-а будет невозможно. Или нужно вызывать не универсальный, а специфичный, для multi-part message in MIME format, метод загрузки, если он есть
Amateur (2007-03-27 10:07:00) [8]Реализовал все через временные файлы на диске - из Blob поля файлик на жесткий диск -> c:\123.mht, затем WebBrawser.Navigate(''c:\123.mht) Все работает, но всетаки хочу сделать через потоки, разобраться, понять для себя... Мастера, может быть кто-то делал подобное, подскажите пожалуйста...
Задача сводится к следующему - есть переменная Bs: TBlobStream, в ней сидит один файлик *.html или *.mht, надо загрузить его в компонент на форме WebBrowser1. Помогите, замучался уже :/
Плохиш (2007-03-23 17:05:00) [9]
> Amateur (23.03.07 14:07) [11]
Просмотр при пролистывании базы в любом случае с такими объёмами будет тормозить. Я бы сделал задержку в пару секунд на показ страницы, если пользователю действительно надо, то он задержится на данной записи. Для полной красоты добавил бы ещё и появление песочных часов при переходе между записями...
Amateur (2007-03-23 14:07:00) [10]Это страницы в mht там же в 1-м файле все включая картинки со страницы, поэтому и большие. А скорость - просмотр пользователем, пролистывание базы. Ну попробую еще, надеюсь хватит скорости.
Johnmen (2007-03-23 13:58:00) [11]
> а если файлы в блобе, скажем, по 200-500кб не будет ощущаться
> постоянная-запись чтение на диск?
Ну это надо смотреть. Я же не знаю частоту чтения-записи, какой винчестер, какой компьютер....
И не совсем понятно, откуда такие большие размеры файлов?
Amateur (2007-03-23 13:22:00) [12]Johnmen, а если файлы в блобе, скажем, по 200-500кб не будет ощущаться постоянная-запись чтение на диск? Если действительно не заметна разница, я конечно попробую этот вариант. Спасибо за советы!
Johnmen (2007-03-23 12:55:00) [13]Да я уже не помню подробностей, но у меня всё работало на тестовых испытаниях проекта, но было принято решение о загрузке из файла. Это оказалось проще и понятней без видимого проигрыша в скорости...
Amateur (2007-03-23 12:25:00) [14]эх чтото ошибку код ваш дает ((
raised exception class EInvalidCast with message 'invalid class typecast'
в чем тут может быть дело? не подскажете?
Amateur (2007-03-23 12:22:00) [15]ну сжатые странички, где картинки и прочее в одном файле... стандартный формат, в IE есть сохранение в нем...
Johnmen (2007-03-23 12:18:00) [16]
> в MHT-формате
Что за формат?
Amateur (2007-03-23 12:17:00) [17]Так если я правильно понял там приведен пример как загрузить HTML код из строковой переменной в WebBrowser. А как разобраться с загрузкой из Blob? У меня база данных с сохраненными веб страницами в MHT-формате, пользователь переходит по записям в гриде а рядом в WebBrowser должно отображается соответствующее BloB поле... Вот это не могу реализовать. Памагите ))
Johnmen (2007-03-23 12:17:00) [18]Вот, что в моём факе
(WebBrowser1.DefaultInterface.Document as IPersistStreamInit).Load
(TStreamAdapter.Create(TBlobStream.Create(BiolifeTable.FieldByName('Notes')
as TBlobField, bmRead), soOwned));
Плохиш (2007-03-23 12:08:00) [19]http://www.swissdelphicenter.ch/de/showcode.php?id=1096
Amateur (2007-03-23 12:03:00) [20]Видел предложения сохранять страничку из блоб в файл, а потом юзать Navigate и открывать с жесткого диска, но считаю это плохим решением. Может кто-нибудь подскажет как используя потоки загрузить из блоба страничку в TWebBrowser?