Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
widla Участник со стажем
Вступление в Клуб: 22.01.2018
|
Чт Дек 28, 2023 16:57  Копирование файла с именем файла более 128 символов |
|
Полезность: Нет оценки
|
Доброго времени суток!
Пишу операцию, которая генерирует XML-файл для внешней системы. Всё почти сделано, проблема осталась только в копировании сформированного файла с сервера в папку локального компьютера. Имя файла состоит из 146 символов (включая расширение). Копирую дистрибутивной операцией:
Код: | ::[DOCUMENT].[COPYFILES].tbl_F$L(p_file_idx).[SRC_NAME] := p_file_name||'.xml';
::[DOCUMENT].[COPYFILES].tbl_F$L(p_file_idx).[SRC_PATH] := v_system_path;
::[DOCUMENT].[COPYFILES].tbl_F$L(p_file_idx).[SRC_TYPE] := true;
::[DOCUMENT].[COPYFILES].tbl_F$L(p_file_idx).[SRC_DELETE] := true; -- Потом удалить
::[DOCUMENT].[COPYFILES].tbl_F$L(p_file_idx).[DST_NAME] := p_file_name||'.xml';
::[DOCUMENT].[COPYFILES].tbl_F$L(p_file_idx).[DST_PATH] := p_path;
::[DOCUMENT].[COPYFILES].tbl_F$L(p_file_idx).[DST_TYPE] := false;
::[DOCUMENT].[COPYFILES].tbl_F$L(p_file_idx).[DST_DELETE] := false;
stdio.put_line_buf('<% CALL DOCUMENT COPYFILES '||nvl(::[SYSTEM]%id, 1)||' %>'); |
в результате вылетает ошибка:
В настоящий момент операция невозможна:
PL/SQL: : буфер символьных строк слишком маленький ошибка числа или значения
Ругается как раз на строку
Код: | ::[DOCUMENT].[COPYFILES].tbl_F$L(p_file_idx).[SRC_NAME] := p_file_name||'.xml'; |
потому что SRC_NAME имеет тип varchar2(128).
Укоротить имя файла не могу, так как это требование внешней системы. Все операции которые перекидывают файлы с сервера на компьютер в итоге используют всё ту же дистрибутивную операцию ::[DOCUMENT].[COPYFILES]. Пробовал скопировать дистрибутив и поменять в ней тип, так эта операция перестаёт работать.
Может кто знает, есть ли возможность копирования файла с сервера на локальный компьютер?[/code] |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Пт Дек 29, 2023 09:08   |
|
Полезность: Нет оценки
|
А в клиент-скрипте переименовать файл? |
|
 |
Guest_SPb Участник со стажем
Вступление в Клуб: 27.02.2014
|
Пт Дек 29, 2023 10:19   |
|
Полезность: 1
|
Можно заархивировать (например, в ZIP) файл на сервере так, чтобы имя архива было короче, и переносить на клиента уже этот файл-архив и там распаковывать. |
|
 |
Эмиралька Эксперт
Вступление в Клуб: 09.11.2015
|
Пт Дек 29, 2023 11:44  Re: Копирование файла с именем файла более 128 символов |
|
Полезность: Нет оценки
|
Ну, собственно, уже два совета есть! |
|
 |
widla Участник со стажем
Вступление в Клуб: 22.01.2018
|
Пт Дек 29, 2023 12:51   |
|
Полезность: Нет оценки
|
Guest_SPb пишет: | Можно заархивировать (например, в ZIP) файл на сервере так, чтобы имя архива было короче, и переносить на клиента уже этот файл-архив и там распаковывать. |
Хм... Спасибо! В эту сторону не подумал. Спрошу бизнес подойдёт ли им такое решение. |
|
 |
widla Участник со стажем
Вступление в Клуб: 22.01.2018
|
Пт Дек 29, 2023 12:52   |
|
Полезность: Нет оценки
|
Volod пишет: | А в клиент-скрипте переименовать файл? |
Можно пример? Буду очень признателен! |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Вт Янв 09, 2024 10:21   |
|
Полезность: 1
|
смотри CRS_UPLOAD_KVIT
Код: |
sub move_file(filename, dir_src, dir_dst)
on error resume next
if fso.FileExists(dir_dst & filename) then
fso.DeleteFile dir_dst & filename, true
end if
err.clear
fso.MoveFile dir_src & filename, dir_dst & filename
if err.number <> 0 then
exit sub
end if
end sub
|
|
|
 |
Эмиралька Эксперт
Вступление в Клуб: 09.11.2015
|
Вт Янв 09, 2024 10:24   |
|
Полезность: 2
|
widla пишет: | Volod пишет: | А в клиент-скрипте переименовать файл? |
Можно пример? Буду очень признателен! |
Что-нибудь типа такого:
Код: |
sub RenameFile(p_file, p_to)
Set fs = CreateObject("Scripting.FileSystemObject")
if not fs.FileExists(p_file)) then
MsgBox("Файл " & p_file & " не существует на локальной машине")
Exit Sub
end if
fs.MoveFile p_file, p_to
end sub
|
|
|
 |
|