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

Вниз

Как в трехзвенке передать файл с сервера приложений?   Найти похожие ветки 

 
bronco79   (2007-05-28 17:34) [0]

Подскажите, какие есть способы передачи файла (exe, xls) с сервера приложений на клиента? Использую DCOM.


 
Сергей М. ©   (2007-05-29 09:58) [1]


> какие есть способы передачи файла


Способов передачи файла всего один - передача его имени (если это необходимо) и содержимого.

И "трехзвенка" тут совершенно ни причем.


 
bronco79   (2007-05-29 12:52) [2]

Спасибо, я в курсе :-)
Интересует передача содержимого.


 
Сергей М. ©   (2007-05-29 12:54) [3]


> Интересует передача содержимого


Содержимое обычно передают массивом либо стримом.


 
bronco79   (2007-05-29 12:56) [4]

То есть писать интерфейс самому или что-то готовое уже есть?


 
Сергей М. ©   (2007-05-29 13:06) [5]

Для случая со стримом есть готовый интерфейс - IStream.
Для случая с массивом проще всего поступить так
Result := VarArrayCreate(..), где Result - это OleVariant.


 
bronco79   (2007-05-29 13:32) [6]

Спасибо. Буду пробовать. Правда с IStream пока не совсем ясно, т.к. Transactional Data Module такой тип не поддерживает...


 
Сергей М. ©   (2007-05-29 16:18) [7]


> Transactional Data Module такой тип не поддерживает


Зато поддерживается IUnknown.

А IStream есть наследник IUnknown.


 
bronco79   (2007-07-19 21:45) [8]

Вобщем, с трехзвенкой оказалось не все так гладко...
Если подключаешься через TDCOMConnection, то можно передавать и через IStream и через массив (пробовал файлы размером до 700 Мб).
Если подключаешься через TWebConnection, то IStream не рулит (ошибка что-то вроде "Interface not supported"), мало того, похоже, что никакие наследники IUnknown при таком подключении также не поддерживаются. Но и это еще не все. Массивы данных размером 10-20 мегабайт передаются нормально, а большие не передаются - виснет намертво(вроде httpsrvr.dll, но это не точно).
Короче говоря, поскольку мне требовался универсальный механизм для трех типов подключений (TDCOMConnection, TWebConnection, TSocketConnection), пришлось реализовывать передачу через массив порциями по N килобайт.


 
Polevi ©   (2007-08-06 09:00) [9]

http://www.rsdn.ru/article/com/marsh.xml?print



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

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

Наверх




Память: 0.48 MB
Время: 0.005 c
11-1248519642
Ruzzz
2009-07-25 15:00
2013.10.20
EditBox, метод Add и св-во Caption


2-1358857187
O'ShinW
2013-01-22 16:19
2013.10.20
Копировать из одного документа MSWord в другой, без буфера обмена


15-1367851241
Писатель
2013-05-06 18:40
2013.10.20
Delphi XE5(поддержка Андроид)


2-1359545925
aka
2013-01-30 15:38
2013.10.20
Asm <--> машинный код


10-1180359297
bronco79
2007-05-28 17:34
2013.10.20
Как в трехзвенке передать файл с сервера приложений?