|
|
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
Всем доброго дня! Задача такая: есть таблица с полем-чекбоксом, выбираем несколько записей, и нужно каждую выгрузить отдельным файлом. Решаю так. Процесс по нажатию кнопки: Код: plsql 1. 2. 3. 4. 5. 6. В функции download_file формирую блоб (xml) и выгружаю его таким образом: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Проблема такая: если использовать при выгрузке apex_application.stop_apex_engine, то выгружается только первый файл (это понятно, stop_apex_engine убивает процесс). Если использовать g_unrecoverable_error, то выгружается только последний файл. Подскажите, пожалуйста, что тут можно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 12:37 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
Используем Apex 5.0.0.00.31, Oracle 12.1.0.2.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 12:39 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
Turingvetil, Боюсь стандартными средствами ни как. У меня закралась мысль, не уверен что сработает, надо пробовать. Пишите асинхроный ajax, который в в цикле запускает APPLICATION_PROCCESS по скачке файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 12:56 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
blkangelкоторый в в цикле запускает APPLICATION_PROCCESS 1) В цикле (яваскриптовом) нужно делать редиректы на процессы которые выдают файлы 2) Пакуете на сервере все файлы в один зип и отдаете пользователю одним файлом. Других вариантов нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 13:09 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
Casufiblkangelкоторый в в цикле запускает APPLICATION_PROCCESS 1) В цикле (яваскриптовом) нужно делать редиректы на процессы которые выдают файлы 2) Пакуете на сервере все файлы в один зип и отдаете пользователю одним файлом. Других вариантов нет. А чем один APPLICATION_PROCCESS процесс плох, просто параметром передавать какой файл надо качать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 13:14 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
blkangelА чем один APPLICATION_PROCCESS процесс плох Ни чем не плох, я имел ввиду не разные процессы, а разные редиректы, нужен не аякс запрос, потому что аякс предполагает что вы получаете данные а потом их кудато размещаете, а банальный редирект в цикле, на процессы, которые отдают блобы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 13:21 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
Ну вот как то так JavaScript : Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. APPLICATION_PROCESS=DOWNLOAD_FILE Код: plsql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 13:22 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
Casufiblkangelкоторый в в цикле запускает APPLICATION_PROCCESS 1) В цикле (яваскриптовом) нужно делать редиректы на процессы которые выдают файлы 2) Пакуете на сервере все файлы в один зип и отдаете пользователю одним файлом. Других вариантов нет. Да, вот как раз наткнулась в другой теме на аналогичный совет blkangel: blkangelmld-11, Есть два пути. 1. Сложный. побайтово организовать зип файл. (Я видел пример как побайтово распаковывают на pl/sql) 2. Проще. Выгружаешь все в директорию ORACLE, пакуешь стандартными средствами ОС, и отдаешь на скачивание. Вариант с зипом мне больше нравится. А как его автоматически запаковать, Оракл умеет? Или надо средствами Винды (это было бы не так удобно, т.к. надо просить доступ к серверу)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 13:26 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
blkangelНу вот как то так JavaScript : Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. APPLICATION_PROCESS=DOWNLOAD_FILE Код: plsql 1. 2. 3. Спасибо большое, попробую! Простите за глупый вопрос, а где функцию на яваскрипте писать? Раньше не пробовала... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 13:28 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
CasufiblkangelА чем один APPLICATION_PROCCESS процесс плох Ни чем не плох, я имел ввиду не разные процессы, а разные редиректы, нужен не аякс запрос, потому что аякс предполагает что вы получаете данные а потом их кудато размещаете, а банальный редирект в цикле, на процессы, которые отдают блобы. Согласен, тогда наверное так надо переделать JS Код: javascript 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 13:32 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
blkangel, Я не уверен в том как будет работать window.location, мы используем window.open( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 13:42 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
Turingvetil, Можно использовать и сборку URL через getFile.addParam только тогда вызывать window.open(getFile.url()) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 13:44 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
Перепишу итог. Создать APPLICATION ITEM = TMP_ID Создать APPLCATION_PROCESS=DOWNLOAD_FILE Код: plsql 1. 2. 3. javaScript: Код: javascript 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 13:55 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
CasufiTuringvetil, Можно использовать и сборку URL через getFile.addParam только тогда вызывать window.open(getFile.url()) Поясните, как в GET запросе, можно добавить параметр через getFile.addParam? Я тут гуглил как передать X01-X10 при обращение к процессу через ссылку, ничего не нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 13:57 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
blkangel, Код: javascript 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 14:01 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
Casufi, ОГРОМНЕЙШЕЕ спасибо. Я не видел такого формата ссылки, выглядит результат примерно так. "/wwv_flow.show?p_request=APPLICATION_PROC…WNLOAD_FILE&p_instance=10887217489688&p_flow_id=602&p_flow_step_id=0&x01=1" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 14:06 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
blkangelПерепишу итог. Создать APPLICATION ITEM = TMP_ID Создать APPLCATION_PROCESS=DOWNLOAD_FILE Код: plsql 1. 2. 3. javaScript: Код: javascript 1. 2. 3. 4. 5. 6. 7. Простите, а куда javascript писать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 14:46 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
Turingvetil, Приплыли ))))) Судя по стартовому топику, у вас есть страничка с репортом. Ну вот в header страницы яваскрипт и кидайте. А по кнопке вызывайте. Не забудьте проставить свои индексы (f01-f50) в JS коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 15:10 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
blkangel, спасибо! Буду осмыслять :) Отпишусь, как получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 16:19 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
Turingvetil, Я провел эксперимент, у меня получилось... Как то кривовато это выглядит. У меня для эксперимента был репорт 50 строк. После запуска процедуры, начались мелькать вкладки, потом закрываться. Половина файлов,таких как в PDF открылось в новом окне, еще половину внизу побежали, но отобразилось 10 последних только... (Хром). Ну реализуете посмотрите как это выглядит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 16:36 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
blkangelКак то кривовато это выглядит. И опять есть два пути 1) Начинать следующую итерацию после конфирма, ну например перед скачиванием второго файла выдать запрос confirm('Скачать следующий?'); Тогда пока пользователь возится с первым файлом, предыдущий будет ждать и не будет мусорки 2) Запаковать все на сервере в один зип и отдать одним файлом, имхо самый эстетичный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 17:46 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
Casufi, Я думаю если цель именно скачать, то как указано у автора attachment, нормально будет. У меня стоит inline(мне так надо), поэтому часть файлов, которые браузер может отобразить, он отображает. Мне просто интересно было, я провел эксперимент, а так параметром можно передавать (inline/attachment) и будет более менее красиво. Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 17:55 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
Пока результаты такие. Создала APPLICATION PROCESS DOWNLOAD_FILE: Код: plsql 1. 2. 3. Javascript: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. Вызываю по нажатию кнопки Redirect to URL, Target - javascript:downloadFiles(); Выгружается нормально, но почему-то только первая строка. Если в функции просто выводить элементы массива: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. то выводятся значения всех строк, независимо от того, заполнены ли чекбоксы. Разве так должно быть? В массиве же хранятся только выделенные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2016, 09:30 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
Turingvetil, Вы путаете с PL/SQL процессом. Если Вас надо только те которые были отмечены, добавьте условие в цикл. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2016, 09:40 |
|
||
|
Выгрузить несколько файлов в одном процессе
|
|||
|---|---|---|---|
|
#18+
Опечатка Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2016, 09:41 |
|
||
|
|

start [/forum/topic.php?fid=50&msg=39160249&tid=1874707]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 491ms |

| 0 / 0 |
