powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Копировать файл
13 сообщений из 13, страница 1 из 1
Копировать файл
    #36672859
KotTN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Подскажите, пожалуйста, можно ли на уровне Forms 6i скопировать файл с клиента на сервер? Путь и наименование файла указывает пользователь.
Пробовала делать через UTL_FILE:
1. Создала директорию
create or replace directory MY_DIR as 'C:\tmp'; (директория 'SYS_DIR' уже создана давно)
2.
DECLARE
V1 varchar2(32767);
F1 UTL_FILE.FILE_TYPE;
begin
F1 := UTL_FILE.FOPEN('MY_DIR','export_201005.csv','R');
UTL_FILE.GET_LINE(F1,V1);
UTL_FILE.fcopy(src_location => 'MY_DIR',src_filename => 'export_201005.csv',dest_location => 'FST_SOW',dest_filename => 'export_201005.csv',start_line => 2);
UTL_FILE.FCLOSE(F1);
end;

Выдает ошибку: недопустимая операция с файлом.
...
Рейтинг: 0 / 0
Копировать файл
    #36673000
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
utl_file работает только с директориями на сервере, text_io - на клиенте.
Так что если сначала файл прочитать в переменную(ые), а потом записать на сервер - то можно.
...
Рейтинг: 0 / 0
Копировать файл
    #36673286
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Forms 6i скопировать файл с клиента на сервер

Client-Server или Web-Forms ?
...
Рейтинг: 0 / 0
Копировать файл
    #36673337
KotTN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Client-Server
...
Рейтинг: 0 / 0
Копировать файл
    #36675114
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в чем проблема?

1.Читаем на клиенте файл через TEXT_IO.
2.Передаем на сервер (вызовами серверных процедур).
3.Пишем в файл на сервере через UTL_FILE.

В принципе, пункт 2 можно опустить. Т.е. читать файл через TEXT_IO, записывать через UTL_FILE. Но все же советую "обернуть" вызовы UTL_FILE в прослойку из своих процедур на сервере. Хотя это дело вкуса.

Другое дело, что работать будет ТОЛЬКО с текстовыми файлами. Если нужны бинарные файлы, то Forms их читать не умеет IMHO. Нужно брать в руки C/Java (лучше C).

Вместо "файла" на сервере, для хранения данных можно использовать CLOB/BLOB и хранить в БД.
...
Рейтинг: 0 / 0
Копировать файл
    #36677715
hominis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если это OeBS могу подсказать другой способ загрузки любого файла на сервер.
...
Рейтинг: 0 / 0
Копировать файл
    #36678051
hominisЕсли это OeBS могу подсказать другой способ загрузки любого файла на сервер.

подскажи. чтобы любой файл в любую директорию oebs
...
Рейтинг: 0 / 0
Копировать файл
    #36678653
hominis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Настраиваем на нужной нам форме attachments. О том как это сделать можно почитать в документации Oracle Applications Developer’s Guide.
2. После загрузки файла в BLOB через attachments(файлы загружаются в таблицу fnd_lobs), его можно с помощью пакета DBMS_LOB прочитать и UTL_FILE записать. Либо воспользоватся уже готовой программой FNDGFU для выгрузки файлов из BLOB в файл ОС.
...
Рейтинг: 0 / 0
Копировать файл
    #36678676
hominis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
бессмысленный_и_беспощадныйhominisЕсли это OeBS могу подсказать другой способ загрузки любого файла на сервер.

подскажи. чтобы любой файл в любую директорию oebs

Скажи, а зачем тебе это нужно? Что ты дальше будешь с этим файлом делать?
Если тебе нужно проэкспоритровать файл *.csv в таблицу и чтобы пользователь сам его мог выбрать из формы, то у меня уже есть готовое решение.
...
Рейтинг: 0 / 0
Копировать файл
    #36679235
hominis1. Настраиваем на нужной нам форме attachments. О том как это сделать можно почитать в документации Oracle Applications Developer’s Guide.
2. После загрузки файла в BLOB через attachments(файлы загружаются в таблицу fnd_lobs), его можно с помощью пакета DBMS_LOB прочитать и UTL_FILE записать. Либо воспользоватся уже готовой программой FNDGFU для выгрузки файлов из BLOB в файл ОС.

оригинально. сам часто пользовал для разных целей атачменты в том числе и не описанных в документации, типа удаленное распространение инструкций пользователей и централизованное их обновление :) , но сохранять как файлы не приходило в голову. правда для моих целей есть ограничения: возможно не все директории oebs открыты на запись (меня больше интересуют директории сервера приложений) - но это надо проверить
...
Рейтинг: 0 / 0
Копировать файл
    #36679259
hominisбессмысленный_и_беспощадныйhominisЕсли это OeBS могу подсказать другой способ загрузки любого файла на сервер.

подскажи. чтобы любой файл в любую директорию oebs

Скажи, а зачем тебе это нужно? Что ты дальше будешь с этим файлом делать?


я уже немного указал в предыдущем посте - возможность разработчику, пользователю размещать файлы в нужных местах oebs без участия администратора (это конечно не очень хорошо, но бывает нужно).

hominis
Если тебе нужно проэкспоритровать файл *.csv в таблицу и чтобы пользователь сам его мог выбрать из формы, то у меня уже есть готовое решение.


нет, такой надобности нет - для подобных вещей есть WebADI.
...
Рейтинг: 0 / 0
Копировать файл
    #36679847
hominis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если надо на сервер приложений, то второй вариант через FNDGFU
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Копировать файл
    #38053284
KateMur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если кто-то вернется к этой теме: D2KWUTIL

Код: plsql
1.
2.
3.
4.
PROCEDURE Copy_File (  OldFileName      IN  VARCHAR2,
                      NewFileName      IN  VARCHAR2,
                      AllowOverWrite  IN  BOOLEAN DEFAULT FALSE,
                      RaiseExceptions IN   BOOLEAN DEFAULT FALSE);



Copy_File -> Copies the specified file
Arguments:
OldFileName -> The location and name of the file to Copy
NewFileName -> The new location and name for the copy of the file
AllowOverWrite -> TRUE or FALSE(Default) If FALSE, then if the NewFileNamealready exists then the move will fail. If TRUE the existing file will just be overwritten.
RaiseExceptions -> TRUE or FALSE(Default) If set to true, then if thecommand is not successful (e.g the file doesnot exist) then the explicit exception NO_DATA_FOUND will be raised.
Returns:
(NONE)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Копировать файл
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]