Загрузите файл, используя OOS_UTIL_WEB, который был заархивирован - PullRequest
0 голосов
/ 26 марта 2019

Я только начал играть с Oracle APEX, поэтому, пожалуйста, прости меня.Я пытаюсь загрузить набор файлов из базы данных, заархивировать их, а затем попросить пользователя загрузить их через приложение.

Я слышал, что OOS_UTIL_WEB.DOWNLOAD_FILE может помочь с этим, поэтому я установил его и вижу пакеты.Если это не хороший способ, пожалуйста, кричите, очень плохо знакомы с этим!

Ниже приведен код, который выбирает файлы, которые я хочу включить, а затем архивирует их.Затем, если я правильно понял, тогда будет предложено загрузить.

Когда я пытаюсь запустить код при нажатии кнопки, я получаю сообщение об ошибке:

Ошибка: SyntaxError: Неожиданный токен P в JSON в позиции 0

Их документация:https://github.com/OraOpenSource/oos-utils/blob/master/docs/oos_util_web.md#download_file

Я не вижу, что я делаю неправильно, и недостаточно работал с APEX, чтобы знать, как его устранить.

Я использую Apex версии 18.1.0 на БД Oracle 12c.

DECLARE

    v_ZIP_FILE BLOB;

BEGIN

    FOR v_FILE IN ( SELECT  DATA_FILENAME,
                            DATA_CONTENT
                    FROM    MY_MONEY_WEEK_UPLOADS
                    WHERE   USER_ID = :P15_USER_ID )

    LOOP

        APEX_ZIP.ADD_FILE (
            P_ZIPPED_BLOB   => v_ZIP_FILE,
            P_FILE_NAME     => v_FILE.DATA_FILENAME,
            P_CONTENT       => v_FILE.DATA_CONTENT
        );

    END LOOP;

    APEX_ZIP.FINISH (
        P_ZIPPED_BLOB       => v_ZIP_FILE );

    OOS_UTIL_WEB.DOWNLOAD_FILE (
        P_FILENAME          => 'Download.zip',
        P_BLOB              => v_ZIP_FILE );

END;

1 Ответ

0 голосов
/ 27 марта 2019

, пожалуйста, перейдите на specific page > Advanced > Reload on Submit и измените его на Always. Надеюсь, что это решит проблему.

В APEX 5.1 или выше, если параметр «Перезагрузить при отправке» установлен «Только для успеха» (по умолчанию), он будет использовать новый оптимизированный процесс отправки страницы и ожидать, что отформатированный результат JSON вернется из механизма APEX. Очевидно, что когда вы используете процесс страницы, который переопределяет буфер HTP и генерирует двоичный контент (вместо правильно сформированного результата JSON), библиотеки на странице не знают, как с этим справиться, и, следовательно, приводят к этому тупому Сообщение «Неожиданный токен ...». [Для справки - https://joelkallman.blogspot.com/2017/12/errors-when-downloading-file-on-page.html?_sm_au_=isV6WJ02r1MnWkP5]

...