powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Выгрузить несколько файлов в одном процессе
39 сообщений из 39, показаны все 2 страниц
Выгрузить несколько файлов в одном процессе
    #39159988
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня!

Задача такая: есть таблица с полем-чекбоксом, выбираем несколько записей, и нужно каждую выгрузить отдельным файлом.
Решаю так. Процесс по нажатию кнопки:
Код: plsql
1.
2.
3.
4.
5.
6.
BEGIN
 FOR I IN 1 .. APEX_APPLICATION.G_F01.COUNT
 LOOP
 cher_sp.load_ndfl6.download_file(TO_NUMBER(APEX_APPLICATION.G_F01(i)));
 END LOOP;
END;



В функции download_file формирую блоб (xml) и выгружаю его таким образом:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
...
htp.init;
owa_util.mime_header('text/xml', false );		
htp.p( 'Content-Length: ' || dbms_lob.getlength( myfile ) );					
htp.p( 'Content-disposition: attachment; filename="'||c0_filename||'.xml";' );	
owa_util.http_header_close;
wpg_docload.download_file(myfile);
htmldb_application.g_unrecoverable_error := true;
--apex_application.stop_apex_engine; 
...



Проблема такая: если использовать при выгрузке apex_application.stop_apex_engine, то выгружается только первый файл (это понятно, stop_apex_engine убивает процесс). Если использовать g_unrecoverable_error, то выгружается только последний файл.

Подскажите, пожалуйста, что тут можно сделать?
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39159991
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Используем Apex 5.0.0.00.31, Oracle 12.1.0.2.0
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160021
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetil,

Боюсь стандартными средствами ни как.
У меня закралась мысль, не уверен что сработает, надо пробовать.
Пишите асинхроный ajax, который в в цикле запускает APPLICATION_PROCCESS по скачке файлов.
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160052
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangelкоторый в в цикле запускает APPLICATION_PROCCESS
1) В цикле (яваскриптовом) нужно делать редиректы на процессы которые выдают файлы
2) Пакуете на сервере все файлы в один зип и отдаете пользователю одним файлом.
Других вариантов нет.
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160066
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Casufiblkangelкоторый в в цикле запускает APPLICATION_PROCCESS
1) В цикле (яваскриптовом) нужно делать редиректы на процессы которые выдают файлы
2) Пакуете на сервере все файлы в один зип и отдаете пользователю одним файлом.
Других вариантов нет.

А чем один APPLICATION_PROCCESS процесс плох, просто параметром передавать какой файл надо качать?
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160080
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangelА чем один APPLICATION_PROCCESS процесс плох
Ни чем не плох, я имел ввиду не разные процессы, а разные редиректы, нужен не аякс запрос, потому что аякс предполагает что вы получаете данные а потом их кудато размещаете, а банальный редирект в цикле, на процессы, которые отдают блобы.
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160082
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вот как то так

JavaScript :
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
function downloadFiles () {
	var arrf30 = new Array();
	arrf30 = document.getElementsByName("f30");


	for (var i=0; i < arrf30.length;i++) {
		var getFile = new htmldb_Get(null, $v('pFlowId'),'APPLICATION_PROCESS=DOWNLOAD_FILE', 0);
		getFile.addParam('x01',arrf30[i].value);
		getFile.GetAsync(function(pResponse){
			if(pResponse.readyState==4 && pResponse.status==200){
				console.log('Success');
			};
		});
		getFile=null;
	};

};



APPLICATION_PROCESS=DOWNLOAD_FILE

Код: plsql
1.
2.
3.
BEGIN
 cher_sp.load_ndfl6.download_file(TO_NUMBER(APEX_APPLICATION.G_x01));
END;
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160090
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Casufiblkangelкоторый в в цикле запускает APPLICATION_PROCCESS
1) В цикле (яваскриптовом) нужно делать редиректы на процессы которые выдают файлы
2) Пакуете на сервере все файлы в один зип и отдаете пользователю одним файлом.
Других вариантов нет.
Да, вот как раз наткнулась в другой теме на аналогичный совет blkangel:
blkangelmld-11,
Есть два пути.
1. Сложный. побайтово организовать зип файл. (Я видел пример как побайтово распаковывают на pl/sql)
2. Проще. Выгружаешь все в директорию ORACLE, пакуешь стандартными средствами ОС, и отдаешь на скачивание.

Вариант с зипом мне больше нравится. А как его автоматически запаковать, Оракл умеет? Или надо средствами Винды (это было бы не так удобно, т.к. надо просить доступ к серверу)?
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160093
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangelНу вот как то так

JavaScript :
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
function downloadFiles () {
	var arrf30 = new Array();
	arrf30 = document.getElementsByName("f30");


	for (var i=0; i < arrf30.length;i++) {
		var getFile = new htmldb_Get(null, $v('pFlowId'),'APPLICATION_PROCESS=DOWNLOAD_FILE', 0);
		getFile.addParam('x01',arrf30[i].value);
		getFile.GetAsync(function(pResponse){
			if(pResponse.readyState==4 && pResponse.status==200){
				console.log('Success');
			};
		});
		getFile=null;
	};

};



APPLICATION_PROCESS=DOWNLOAD_FILE

Код: plsql
1.
2.
3.
BEGIN
 cher_sp.load_ndfl6.download_file(TO_NUMBER(APEX_APPLICATION.G_x01));
END;



Спасибо большое, попробую! Простите за глупый вопрос, а где функцию на яваскрипте писать? Раньше не пробовала...
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160103
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CasufiblkangelА чем один APPLICATION_PROCCESS процесс плох
Ни чем не плох, я имел ввиду не разные процессы, а разные редиректы, нужен не аякс запрос, потому что аякс предполагает что вы получаете данные а потом их кудато размещаете, а банальный редирект в цикле, на процессы, которые отдают блобы.

Согласен, тогда наверное так надо переделать JS
Код: javascript
1.
2.
3.
4.
5.
6.
7.
function downloadFiles () {
	var arrf30 = new Array();
	arrf30 = document.getElementsByName("f30");
	for (var i=0; i < arrf30.length;i++) {
		window.location.href("f?p=&APP_ID.:0:&APP_SESSION.:APPLICATION_PROCESS=APPLICATION_PROCESS:::TMP_ID:"+arrf30[i].value);
	};
};
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160133
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangel,

Я не уверен в том как будет работать window.location, мы используем window.open(
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160138
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Turingvetil,

Можно использовать и сборку URL через getFile.addParam только тогда вызывать window.open(getFile.url())
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160163
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перепишу итог.
Создать APPLICATION ITEM = TMP_ID
Создать APPLCATION_PROCESS=DOWNLOAD_FILE


Код: plsql
1.
2.
3.
BEGIN
 cher_sp.load_ndfl6.download_file(TO_NUMBER(:TMP_ID));
END;



javaScript:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
function downloadFiles () {
	var arrf30 = new Array();
	arrf30 = document.getElementsByName("f30");
	for (var i=0; i < arrf30.length;i++) {
		window.open("f?p="+$v(pFlowId)+":0:"+$v(pInstance)+".:APPLICATION_PROCESS=DOWNLOAD_FILE:::TMP_ID:"+arrf30[i].value);
	};
};
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160169
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CasufiTuringvetil,

Можно использовать и сборку URL через getFile.addParam только тогда вызывать window.open(getFile.url())
Поясните, как в GET запросе, можно добавить параметр через getFile.addParam?
Я тут гуглил как передать X01-X10 при обращение к процессу через ссылку, ничего не нашел.
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160176
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangel,

Код: javascript
1.
2.
3.
4.
5.
	for (var i=0; i < arrf30.length;i++) {
		var getFile = new htmldb_Get(null, $v('pFlowId'),'APPLICATION_PROCESS=DOWNLOAD_FILE', 0);
		getFile.addParam('x01',arrf30[i].value);
		window.open(getFile.url());
	};
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160185
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Casufi,

ОГРОМНЕЙШЕЕ спасибо.
Я не видел такого формата ссылки, выглядит результат примерно так.
"/wwv_flow.show?p_request=APPLICATION_PROC…WNLOAD_FILE&p_instance=10887217489688&p_flow_id=602&p_flow_step_id=0&x01=1"
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160249
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangelПерепишу итог.
Создать APPLICATION ITEM = TMP_ID
Создать APPLCATION_PROCESS=DOWNLOAD_FILE


Код: plsql
1.
2.
3.
BEGIN
 cher_sp.load_ndfl6.download_file(TO_NUMBER(:TMP_ID));
END;



javaScript:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
function downloadFiles () {
	var arrf30 = new Array();
	arrf30 = document.getElementsByName("f30");
	for (var i=0; i < arrf30.length;i++) {
		window.open("f?p="+$v(pFlowId)+":0:"+$v(pInstance)+".:APPLICATION_PROCESS=DOWNLOAD_FILE:::TMP_ID:"+arrf30[i].value);
	};
};



Простите, а куда javascript писать?
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160277
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetil,

Приплыли )))))

Судя по стартовому топику, у вас есть страничка с репортом. Ну вот в header страницы яваскрипт и кидайте. А по кнопке вызывайте.
Не забудьте проставить свои индексы (f01-f50) в JS коде.
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160364
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,
спасибо! Буду осмыслять :) Отпишусь, как получится.
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160390
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetil,

Я провел эксперимент, у меня получилось...
Как то кривовато это выглядит. У меня для эксперимента был репорт 50 строк.
После запуска процедуры, начались мелькать вкладки, потом закрываться. Половина файлов,таких как в PDF открылось в новом окне, еще половину внизу побежали, но отобразилось 10 последних только... (Хром).
Ну реализуете посмотрите как это выглядит...
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160481
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangelКак то кривовато это выглядит.
И опять есть два пути
1) Начинать следующую итерацию после конфирма, ну например перед скачиванием второго файла выдать запрос confirm('Скачать следующий?'); Тогда пока пользователь возится с первым файлом, предыдущий будет ждать и не будет мусорки
2) Запаковать все на сервере в один зип и отдать одним файлом, имхо самый эстетичный вариант.
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160488
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Casufi,

Я думаю если цель именно скачать, то как указано у автора attachment, нормально будет.
У меня стоит inline(мне так надо), поэтому часть файлов, которые браузер может отобразить, он отображает.
Мне просто интересно было, я провел эксперимент, а так параметром можно передавать (inline/attachment) и будет более менее красиво.

Код: plsql
1.
htp.p( 'Content-disposition: attachment; filename="'||c0_filename||'.xml";' );
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160723
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока результаты такие. Создала APPLICATION PROCESS DOWNLOAD_FILE:

Код: plsql
1.
2.
3.
BEGIN
 cher_sp.load_ndfl6.download_file(APEX_APPLICATION.G_x01);
 END;



Javascript:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
function downloadFiles () {
	var arrf30 = new Array();
	arrf30 = document.getElementsByName("f01");
	for (var i=0; i < arrf30.length;i++) 
	{	var getFile = new htmldb_Get(null, $v('pFlowId'),'APPLICATION_PROCESS=DOWNLOAD_FILE', 0);
	    getFile.addParam("x01",arrf30[i].value);
	    window.open(getFile.url());
	}
};



Вызываю по нажатию кнопки Redirect to URL, Target - javascript:downloadFiles();

Выгружается нормально, но почему-то только первая строка.
Если в функции просто выводить элементы массива:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
function downloadFiles () {
	var arrf30 = new Array();
	var str = ""
	arrf30 = document.getElementsByName("f01");
	for (var i=0; i < arrf30.length;i++) 
	{str = str+" "+arrf30[i].value}
	document.write(str);
};


то выводятся значения всех строк, независимо от того, заполнены ли чекбоксы. Разве так должно быть? В массиве же хранятся только выделенные?
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160729
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetil,

Вы путаете с PL/SQL процессом.
Если Вас надо только те которые были отмечены, добавьте условие в цикл.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function downloadFiles () {
	var arrf30 = new Array();
	var str = ""
	arrf30 = document.getElementsByName("f01");
	for (var i=0; i < arrf30.length;i++) 
	if (arrf30[i].cheked) {
		{str = str+" "+arrf30[i].value}
		document.write(str);
	};
};
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160730
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опечатка
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function downloadFiles () {
	var arrf30 = new Array();
	var str = ""
	arrf30 = document.getElementsByName("f01");
	for (var i=0; i < arrf30.length;i++) 
	if (arrf30[i].checked) {
		{str = str+" "+arrf30[i].value}
		document.write(str);
	};
};
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160753
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,

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

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
function downloadFiles () {
	var arrf30 = new Array();
	arrf30 = document.getElementsByName("f01");
	for (var i=0; i < arrf30.length;i++) 
    if (arrf30[i].checked)
	{	var getFile = new htmldb_Get(null, $v('pFlowId'),'APPLICATION_PROCESS=DOWNLOAD_FILE', 0);
	    getFile.addParam("x01",arrf30[i].value);
	    window.open(getFile.url());
	    document.write("ololo");
	}
};



Отмечаю 2 строки, выгружает файл из первой, пишет "ololo".
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160759
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetil,
А где обнуление, я вроде писал везде????
Код: javascript
1.
getFile=null;
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160830
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,
эх, не хотела Вас больше мучить, но никак не выходит каменный цветок...

Сейчас код выглядит так:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
function downloadFiles () {
	var arrf30 = new Array();
	arrf30 = document.getElementsByName("f01");
	for (var i=0; i < arrf30.length;i++) 
    if (arrf30[i].checked)
	{  var getFile = new htmldb_Get(null, $v('pFlowId'),'APPLICATION_PROCESS=DOWNLOAD_FILE', 0);
	    getFile.addParam('x01',arrf30[i].value);
	    window.open(getFile.url());
	    getFile = null;	
	}
};



Выгружает только первый файл.
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160870
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetilblkangel,
эх, не хотела Вас больше мучить, но никак не выходит каменный цветок...

Сейчас код выглядит так:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
function downloadFiles () {
	var arrf30 = new Array();
	arrf30 = document.getElementsByName("f01");
	for (var i=0; i < arrf30.length;i++) 
    if (arrf30[i].checked)
	{  var getFile = new htmldb_Get(null, $v('pFlowId'),'APPLICATION_PROCESS=DOWNLOAD_FILE', 0);
	    getFile.addParam('x01',arrf30[i].value);
	    window.open(getFile.url());
	    getFile = null;	
	}
};



Выгружает только первый файл.

Ну давайте дебажить. результат выкладывайте, чего он в консоль напишет.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
function downloadFiles () {
	var arrf30 = new Array();
	arrf30 = document.getElementsByName("f01");
	console.log("arrf30.length="+arrf30.length);
	for (var i=0; i < arrf30.length;i++) 
    if (arrf30[i].checked)
	{  var getFile = new htmldb_Get(null, $v('pFlowId'),'APPLICATION_PROCESS=DOWNLOAD_FILE', 0);
	    getFile.addParam('x01',arrf30[i].value);
	    window.open(getFile.url());
			console.log("getFile.url()"+getFile.url());
	    getFile = null;	
	}
};
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160912
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,
такое впечатление, что он это действие вообще в дебаг не пишет! А файл грузит. Дебаг запущен, все фильтры сняла, но показывает только событие show.
Зато попутно поймала ошибку, у меня-то действие происходит на странице 2, а я тупо с 0 скопировала... Но всё равно не заработало.
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160922
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetil,

Я вам написал код, который пишет в консоль браузера, а не в дебаг.
Откройте консоль браузера и запустите JS скрипт
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160937
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,
прошу прощения, я с яваскриптом вообще первый раз имею дело, да и с Апексом недавно общаюсь, поэтому сильно туплю =(
В консоли вот что:

f?p=111:2:13416999074070::YES:RP:P2_LOAD_ID,P2_STAVKA_ID:,:310 arrf30.length=2
f?p=111:2:13416999074070::YES:RP:P2_LOAD_ID,P2_STAVKA_ID:,:316 getFile.url() http://kdb1:8081/apex/wwv_flow.show?p_request=APPLICATION_PROCESS=DOWNLOAD_FILE&p_instance=13416999074070&p_flow_id=111&p_flow_step_id=2&x01=33
f?p=111:2:13416999074070::YES:RP:P2_LOAD_ID,P2_STAVKA_ID:,:316 getFile.url() http://kdb1:8081/apex/wwv_flow.show?p_request=APPLICATION_PROCESS=DOWNLOAD_FILE&p_instance=13416999074070&p_flow_id=111&p_flow_step_id=2&x01=61
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160942
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetil,

В консоле все красиво, выделили две записи, два раза запустилось.
JS отрабатывает корректно.
Значит pl/sql смотреть надо.
процедуру cher_sp.load_ndfl6.download_file Сюда в студию
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160949
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
begin
...
myfile := utl_i18n.string_to_raw(txt,'CL8MSWIN1251');

htp.init;
owa_util.mime_header('text/xml', false );    
htp.p( 'Content-Length: ' || dbms_lob.getlength( myfile ) );          
htp.p( 'Content-disposition: attachment; filename="'||c0.filename||'.xml";' );  
owa_util.http_header_close;
wpg_docload.download_file(myfile);
htmldb_application.g_unrecoverable_error := true;
--apex_application.stop_apex_engine; 

end;



myfile - blob, txt - varchar2. Если нужно, выложу целиком, но до этого куска идет только формирование текста, оно нам наверное не важно?
Все-таки грешу на g_unrecoverable_error
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160965
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetil,

Моя процедура по скачиванию отличается только строкой htp.init; ну и пару параметров которые я передаю, у Вас указано жестко? в остальном все одинаково.
А я грешу на неправильный подсчет длинны, myfile blob или clob?
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160970
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetil,

Не заметил выше, blob.

Добавьте в APPLICATION_PROCCESS
exception when OTHERS then sys.htp.p(sqlerrm);
Чего то выдаст в консоль?
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160972
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetil,

И попробуйте в качестве теста, имя фала выдавать на английском, задайте жестко TEST
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39160979
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetil,

О, а это не заметил, зачем оно?
Код: plsql
1.
myfile := utl_i18n.string_to_raw(txt,'CL8MSWIN1251');
...
Рейтинг: 0 / 0
Выгрузить несколько файлов в одном процессе
    #39161009
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,
черт!!! Всё просто: у меня всплывающее окно блокировалось!>__< Только что заметила.
Простите, что столько времени потратила, и спасибо огромное за помощь!!
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Выгрузить несколько файлов в одном процессе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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