![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в трехзвенке передать файл с сервера приложений? [Delphi, Windows]
bronco79 © (2007-05-28 17:34:00)Подскажите, какие есть способы передачи файла (exe, xls) с сервера приложений на клиента? Использую DCOM.
Polevi (2007-08-06 09:00:00) [1]http://www.rsdn.ru/article/com/marsh.xml?print
bronco79 (2007-07-19 21:45:00) [2]Вобщем, с трехзвенкой оказалось не все так гладко...
Если подключаешься через TDCOMConnection, то можно передавать и через IStream и через массив (пробовал файлы размером до 700 Мб).
Если подключаешься через TWebConnection, то IStream не рулит (ошибка что-то вроде "Interface not supported"), мало того, похоже, что никакие наследники IUnknown при таком подключении также не поддерживаются. Но и это еще не все. Массивы данных размером 10-20 мегабайт передаются нормально, а большие не передаются - виснет намертво(вроде httpsrvr.dll, но это не точно).
Короче говоря, поскольку мне требовался универсальный механизм для трех типов подключений (TDCOMConnection, TWebConnection, TSocketConnection), пришлось реализовывать передачу через массив порциями по N килобайт.
Сергей М. (2007-05-29 16:18:00) [3]
> Transactional Data Module такой тип не поддерживает
Зато поддерживается IUnknown.
А IStream есть наследник IUnknown.
bronco79 (2007-05-29 13:32:00) [4]Спасибо. Буду пробовать. Правда с IStream пока не совсем ясно, т.к. Transactional Data Module такой тип не поддерживает...
Сергей М. (2007-05-29 13:06:00) [5]Для случая со стримом есть готовый интерфейс - IStream.
Для случая с массивом проще всего поступить так
Result := VarArrayCreate(..), где Result - это OleVariant.
bronco79 (2007-05-29 12:56:00) [6]То есть писать интерфейс самому или что-то готовое уже есть?
Сергей М. (2007-05-29 12:54:00) [7]
> Интересует передача содержимого
Содержимое обычно передают массивом либо стримом.
bronco79 (2007-05-29 12:52:00) [8]Спасибо, я в курсе :-)
Интересует передача содержимого.
Сергей М. (2007-05-29 09:58:00) [9]
> какие есть способы передачи файла
Способов передачи файла всего один - передача его имени (если это необходимо) и содержимого.
И "трехзвенка" тут совершенно ни причем.