Ограничение размера файла перед отправкой через Dynami c Acrton в Oracle Apex - PullRequest
0 голосов
/ 18 июня 2020

Я хочу создать Dynami c Action для проверки размера файла в поле File Browser. Не могу поставить валидацию Я должен это реализовать через Dynami c Action. Пожалуйста, помогите здесь.

1 Ответ

0 голосов
/ 18 июня 2020

Думаю, вы хотите проверить размер файла, прежде чем пользователь загрузит его в приложение 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;

...