powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Ошибки при выгрузке файлов через wpg_docload.download_file
22 сообщений из 22, страница 1 из 1
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39700376
Ammozg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Есть довольно странная ошибка, возникающая, когда скачиваю файл через APEX.
1) В таблице shema_name.table_with_blobs формируется BLOB с данными
2) В приложении APEX выдаётся ссылка на скачивание документа
Код: sql
1.
<a href="shema.DATA_EXPORT_UTIL.apex_download_txt?i_record_id=111">file_name.txt</a>


3) shema.DATA_EXPORT_UTIL.apex_download_txt фактически реализует функцию wpg_docload.download_file
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 select t.blob_data,
           t.file_name
      into v_blob,
           v_fileName
      from shema_name.table_with_blobs t
     where t.record_id = i_record_id;

   v_blob_length:=DBMS_LOB.GETLENGTH(v_blob);
    owa_util.mime_header('application/txt', FALSE );
    htp.p('Content-length: ' || v_blob_length);
    htp.p('Content-Disposition:  attachment; filename="'||v_fileName||'"');
    owa_util.http_header_close;
    wpg_docload.download_file(v_blob);


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

Кто-нибудь сталкивался с подобным? С ума уже схожу, непонятно откуда такая ошбика возникает. BLOB точно не меняется между загрузками
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39700398
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы не указали версию Апекса.
Два момента попробуйте.
1.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 select t.blob_data,
           t.file_name
      into v_blob,
           v_fileName
      from shema_name.table_with_blobs t
     where t.record_id = i_record_id;

   v_blob_length:=DBMS_LOB.GETLENGTH(v_blob);
    owa_util.mime_header('application/txt', FALSE );
    htp.p('Content-length: ' || v_blob_length);
    htp.p('Content-Disposition:  attachment; filename="'||v_fileName||'"');
    owa_util.http_header_close;
    wpg_docload.download_file(v_blob);
   apex_application.stop_apex_engine;


2. Если у вас 5.х-18.х, то в настройках страницы, блок Advanced, пункт Reload on Submit установите "Always".
Попробуйте, возможно поможет.
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39700480
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ammozg,

Может кэш в браузере ?
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39700848
Ammozg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SvDev,
Может быть всё, что угодно: ошибка абсолютно дурацкая, впору демонов обвинять. К сожалению, я не могу протестировать твой и ранее предложенный подходы, поскольку ошибка воспроизводится нерегулярно. А ещё не могу сказать клиенту "сделайте вот так, я не знаю, как это поможет, но давайте сделаем и будем ждать проблем"
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39700849
Ammozg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,

Верисия 5.1.4.
Спасибо, но оба предложения уже и так есть (скидывал код не полностью)
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39700880
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ammozg,

По описанию во всяком случае похоже на браузерный кеш. Можно отключить кэш в Security Attributes (эффективность для такого ручного метода скачивания файлов я не проверял). У меня в основном через submit, либо данные не меняются. Или можно добавить в ссылку что-нибудь уникальное.
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39700894
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ammozg,

apex добавляет следующие заголовки:

Код: plsql
1.
2.
htp.p('cache-control: no-cache, no-store, max-age=0, must-revalidate');
htp.p('pragma: no-cache');



Чтобы не переписывать метод.
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39700896
Ammozg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SvDev,

В каком смысле "уникальное"? В самом тексте ссылки указано уникальное имя для файла, а в коде - уникальный record_id для поиска соответствующего BLOBа.
Насчёт кэша. Есть много проблем, которые решаются очисткой кэша, но потом кэш снова накапливается и ошибка повторяется, чистить кэш нужно снова, правильно? (из последнего - не мог на один сайт залогиниться без очистки, и происходит это регулярно)
Даже если решение верное, подтвердить я это не смогу) после повторной выгрузки файл всегда верен, независимо от очистки кэша.
Спасибо
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39700898
Ammozg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SvDev,

Кэш в Security attributes не включён
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39700901
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDevУ меня в основном через submit
Вообще я использую разные методы. Чаще всё-таки application process , где в ссылке присутствует апексная сессия и вызывается pl/sql процедура.
В этом случае риск влияния кеша минимизируется и чаще всего некритично.
Вообще не наблюдал такого как в теме пока ни разу.
Может зависеть от браузера.
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39700902
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ammozg,

Вы можете добавить заголовки выше в свой код. Перед owa_util.http_header_close.
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39700907
Ammozg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SvDev,

Буду пробовать все методы по очереди, результат может затянуться, поскольку ошибка плохо воспроизводится. Как что-нибудь изменится - отпишусь.
Сам метод загрузки менять не могу: не те условия.
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39700923
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmmozgSvDev,

В каком смысле "уникальное"? В самом тексте ссылки указано уникальное имя для файла, а в коде - уникальный record_id для поиска соответствующего BLOBа.
Всё зависит от типа приложения. Например, у меня по статистике каждый шестой файл - файл загруженный повторно: с тем же именем файла, но другим размером (я веду лог на таблицу WWV_FLOW_FILE_OBJECTS$). Если добавить в ссылку, например, дату и время последнего обновления файла, то будет уникальное.
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39700930
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А загрузка по submit вызывается, или по другим способом (ajax, get)?
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39700947
Ammozg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SvDev,

Да, имя у меня неуникальное. Но проблемы в том, что я смотрю не в ту версию файла нет. Внутри него есть идентификаторы вроде даты и много чего ещё, из-за чего их невозможно спутать. Железно
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39700954
Ammozg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,
blkangelА загрузка по submit вызывается, или по другим способом (ajax, get)?
Не могу достоверно ответить на этот вопрос: недостаточно шарю (про ajax вообще только что прочитал).
Sumbita нет, насколько могу определить: 1) нет характерного дёргания страницы 2) нет никаких sumbit-настроек в region, в котором находится ссылка.
ajax: никаких скриптов, кроме определений на sql нет

Могу только повторить описанное в заголовке: ссылка перенаправляет на процедуру, формирующую файл из блоба
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39700963
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ammozg,

Тогда вероятнее всего человеческий фактор / методиках проверки.

Формат файла какой ? Если word, то может быть пользователи сам файл исправляют, мимо системы проводят, потом вам лапшу на уши вешают ? Если нужно, чтобы не исправляли, тогда нужен защищенный PDF.
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39700982
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ammozg,

еще видел подобные ошибки при формировании блобов, но у вас в приведенной части кода ничего подобного нет.
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39701274
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ammozgblkangel,
blkangelА загрузка по submit вызывается, или по другим способом (ajax, get)?
Не могу достоверно ответить на этот вопрос: недостаточно шарю (про ajax вообще только что прочитал).
Sumbita нет, насколько могу определить: 1) нет характерного дёргания страницы 2) нет никаких sumbit-настроек в region, в котором находится ссылка.
ajax: никаких скриптов, кроме определений на sql нет

Могу только повторить описанное в заголовке: ссылка перенаправляет на процедуру, формирующую файл из блоба

Тогда картинка складывается, вы формируете файл до сохранения посдледних изменений, этим и обясняется отсутсвие некоторых строк.
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39704118
Ammozg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,

Blob точно заканчивает формироваться до выгрузки в файл. Сформировал BLOB, отследил, что он готов, ушёл пить чай, загрузил файл - ошибка
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39704160
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С формированием много чего может быть.
Кривой цикл по dbms_lob.write, например, или проблема с каким-нибудь select запросом.
Или данные в этот момент кто-то исправил и закоммитил.
...
Рейтинг: 0 / 0
Ошибки при выгрузке файлов через wpg_docload.download_file
    #39784099
Ammozg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема решилась действием типа "почистите кэш", "смените браузер
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Ошибки при выгрузке файлов через wpg_docload.download_file
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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