Думаю, вы хотите проверить размер файла, прежде чем пользователь загрузит его в приложение Apex. Мне это не кажется действием Dynami c. Почему вы не можете использовать проверки?
В любом случае, я бы посмотрел на этот интересный плагин: плагин размера файла apex
Если вам интересно, я знаю, как это сделать это с помощью PL / SQL против apex_application_temp_files. В моем случае пользователь загружает файл с помощью файлового браузера, а затем нажимает кнопку загрузки, что запускает процесс PL / SQL. Программа PL SQL возвращает ошибку, если размер больше 10M. Дайте мне знать, если вам это подходит.
Исправление: На самом деле плагин, о котором я упоминал ранее, можно использовать в динамическом c действии.
Как я уже сказал, я бы использовал фрагмент кода PL / SQL поверх таблицы apex_application_temp_files. Эта таблица поддерживается Apex автоматически. В моем приложении у меня есть следующий код, связанный с кнопкой, которая загружает файлы. Как только пользователь выбирает файл, который он хочет загрузить, процесс запускает процедуру для проверки нескольких аспектов (в моем случае я проверяю, что это файл csv, а также размер)
procedure ValidateFiles (p_file_name in varchar2, p_file_type in varchar2) is
v_blob blob;
blob_length integer;
v_mime_type varchar2(2000);
vlimitsize pls_integer := XXXXXXX -- your limit here
--
begin
SELECT BLOB_CONTENT,
DBMS_LOB.GETLENGTH(blob_content),
mime_type,
INTO v_blob,blob_length,v_mime_type
FROM apex_application_temp_files
WHERE name = p_file_name;
if upper(v_mime_type) <> 'TEXT/COMMA-SEPARATED-VALUES' then
raise_application_error(-20000, 'Wrong extension file, expected:
text/comma-separated-values.');
end if;
-- debug apex messages
apex_debug.message('blob length: %s', blob_length);
--
if blob_length > vlimitsize
then
raise_application_error(-20000, 'File is greater than the limit allowed');
end if;
end;
end ValidateFiles;