Загрузка нескольких файлов на сервер из локального каталога
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
German Профи
Вступление в Клуб: 25.06.2007
|
Сб Июн 23, 2007 11:00  Загрузка нескольких файлов на сервер из локального каталога |
|
Полезность: 1
|
Создадим две строковые переменные V_PATH_LOCAL и V_FILE_LIST, которые выведем на экранную форму,
присвоив идентификаторы PATH_LOCAL и FILE_LIST соответственно.
Далее в "Клиент-скрипт" вносим конструкцию:
Код: | Public Function Main(LastControl)
If LastControl Is Nothing Then
' Действия при загрузке формы
' Действия при потере фокуса валидируемого контрола LastControl
ElseIf LastControl Is OK Then
Set fso = CreateObject("Scripting.FileSystemObject")
if fso.FolderExists(PATH_LOCAL) then
Set f = fso.GetFolder(PATH_LOCAL)
Set fc = f.Files
' Выберем файлы
On Error Resume Next ' Предохранимся от ошибок
For Each f1 in fc
FILE_LIST = FILE_LIST & f1.name & chr(10)
Next
nErr = Err.Number
Err.Clear
On Error GoTo 0
end if
end If
Main = True 'Результат валидатора (True, False, NULL)
end Function |
А в "Тело" операции добавляем код:
Код: | V_PATH_SERVER varchar2(512);
fName varchar2(512);
pos integer;
n_file integer;
begin
V_PATH_SERVER := [SYSTEM_PARAMS]::[GET]('PATH', null);
debug_pipe('Файлы из каталога '||V_PATH_LOCAL||' загружаются на сервер в каталог '||V_PATH_SERVER , 0);
n_file := 0;
[DOCUMENT]::[COPYFILES].idx := 0;
while V_FILE_LIST is not null loop
pos := InStr(V_FILE_LIST, chr(10));
if pos = 0 then
fName := V_FILE_LIST;
V_FILE_LIST := '';
else
fName := substr(V_FILE_LIST, 1, pos - 1);
V_FILE_LIST := substr(V_FILE_LIST, pos + 1);
end if;
n_file := n_file + 1;
[DOCUMENT]::[COPYFILES].tbl_F$L(n_file).[SRC_NAME] := fName;
[DOCUMENT]::[COPYFILES].tbl_F$L(n_file).[SRC_PATH] := V_PATH_LOCAL;
[DOCUMENT]::[COPYFILES].tbl_F$L(n_file).[SRC_TYPE] := false; -- Забирать с клиента
[DOCUMENT]::[COPYFILES].tbl_F$L(n_file).[SRC_DELETE] := true; -- Удалить
[DOCUMENT]::[COPYFILES].tbl_F$L(n_file).[DST_NAME] := fName;
[DOCUMENT]::[COPYFILES].tbl_F$L(n_file).[DST_PATH] := V_PATH_SERVER;
[DOCUMENT]::[COPYFILES].tbl_F$L(n_file).[DST_TYPE] := true; -- На сервер
[DOCUMENT]::[COPYFILES].tbl_F$L(n_file).[DST_DELETE] := false; -- Не удалять
stdio.put_line_buf(' <% CALL DOCUMENT COPYFILES ' || nvl(::[SYSTEM]%id, 1) || ' %> ');
debug_pipe('Загружен файл '||fName , 0);
end loop;
debug_pipe('Всего загружено на сервер '||n_file||' файлов' , 0);
end; |
В "Свойствах" операции на закладке "Дополнительные свойства" не забудьте указать проверки при загрузке операции "Сервер, Клиент". _________________ Homo homini |
|
 |
maestro Профи
Вступление в Клуб: 12.10.2010
|
Чт Окт 28, 2010 13:25   |
|
Полезность: Нет оценки
|
Решал подобную задачу тем же самым способом.
Столкнулся с проблемой: После выполнения операции Папка, из которой производилось копирование, оказалась залоченой.
Её не получается удалить до тех пор, пока не закроешь Навигатор.
Добавка в хвост скрипта
Код: |
Set fso = nothing
Set f = nothing
|
не помогла.
Может кто-нибудь сталкивался с подобным? |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|