1

我正在尝试将文档从 APEX 页面上传到 S3 存储桶,并且在https://www.apexutil.com/ords/prod/f?p=700:200:1349309139567 :::的插件的帮助下成功了::

该插件演示了检索上传结果并插入到表中,如下所述。

Create new dynamic action;
Choose Upload Success [FM Component];
Choose "Execute JavaScript Code" action;
Inside the "Code" textarea define code:

apex.server.process("my_ajax_process", {
x01: this.browserEvent.originalEvent.detail.serverId,
x02: this.browserEvent.originalEvent.detail.file.name,
x03: this.browserEvent.originalEvent.detail.file.body.size,
x04: this.browserEvent.originalEvent.detail.file.body.type
}, {
success: function() {
console.log("success");
},

并在 Ajax 进程中检索 x0 值并插入到表中。

Create Ajax Process, name: "my_ajax_process"
Define PL/SQL code:

declare
l_server_id varchar2(4000) := apex_application.g_x01;
l_name varchar2(4000) := apex_application.g_x02;
l_size number := apex_application.g_x03;
l_type varchar2(4000) := apex_application.g_x04;
begin
insert into MY_TABLE (MT_SERVER_ID, MT_NAME, MT_SIZE, MT_TYPE)
values (l_server_id, l_name, l_size, l_type);
owa_util.status_line(nstatus => 204, creason => 'No Content');
end;

但是,我需要在 Ajax 进程中捕获 X0 值并将其分配给表单页面项,因为我必须将输出与其他表单字段一起存储并存储到我的表中。我已经尝试过,但它没有得到更新。非常感谢任何帮助

declare
l_server_id varchar2(4000) := apex_application.g_x01;
l_name varchar2(4000) := apex_application.g_x02;
l_size number := apex_application.g_x03;
l_type varchar2(4000) := apex_application.g_x04;
begin
:P12_DOCUMENTURL := l_server_id;
:P12_DOCUMENTTYPE := l_type;
:P12_DOCSIZE := l_size;
owa_util.status_line(nstatus => 204, creason => 'No Content');
end;
4

2 回答 2

1

:P12_DOCUMENTURL := l_server_id; -- 这种分配不会在 ajax 进程中工作

但是您可以使用 APEX_UTIL.SET_SESSION_STATE

BEGIN
APEX_UTIL.SET_SESSION_STATE('my_item','myvalue');
END;

例子

BEGIN
APEX_UTIL.SET_SESSION_STATE('P12_DOCUMENTURL',l_server_id);
END;

更多详细信息 - https://docs.oracle.com/cd/E37097_01/doc.42/e35127/GUID-62AA4333-160D-44FD-9F07-D188A2F4BC55.htm#AEAPI181

也请看看这个https://jeffkemponoracle.com/2014/02/apex_util-set_session_state-may-or-may-not-commit/

有关已发布的提交的更多讨论。

于 2020-04-21T08:39:50.543 回答
0

最后这对我有用。

动态动作

var l01 = this.browserEvent.originalEvent.detail.serverId;
var l03 = this.browserEvent.originalEvent.detail.file.body.size;
var l04 = this.browserEvent.originalEvent.detail.file.body.type;
apex.server.process 
( "upload_ajax_process", 
    {},
    { success: function( pData ) {
         $s("P12_DOCUMENTURL",l01 );  
         $s("P12_DOCSIZE", l03);  
         $s("P12_DOCUMENTTYPE", l04);  
      }
    }
);

Ajax 进程“upload_ajax_process”也带有一些虚拟语句。如果没有这个,我会收到“错误:SyntaxError:JSON 中位置 0 的意外标记 P”

begin
  owa_util.status_line(nstatus => 204, creason => 'No Content');
end;
于 2020-04-22T07:08:16.050 回答