能否通过Blob列批量上传文件?或从临时表导入至永久表?
关于APEX文件上传的问题解答
1. 能否通过Item Source Attribute指定Blob列实现多文件上传?
不行。通过Item Source Attribute绑定Blob列的方式,本质是将单个页面项与表中单行的Blob字段关联,仅支持处理单个文件的上传与存储,无法实现多文件批量上传。
2. 能否借助APEX_APPLICATION_TEMP_FILES临时表将文件插入至永久表logistica_files中?
完全可以,这是APEX里实现多文件永久存储的常用方案,具体操作步骤如下:
- 在页面创建多文件上传项,设置其存储类型为
APEX_APPLICATION_TEMP_FILES,上传的多文件会先存入该临时表。 - 创建页面提交进程,用PL/SQL将临时表中的文件数据批量插入到
logistica_files表。示例代码:
INSERT INTO logistica_files (FILENAME, MIMETYPE, CHARSET, BLOB) SELECT filename, mime_type, charset, blob_content FROM apex_application_temp_files WHERE application_id = :APP_ID AND session_id = :APP_SESSION AND created_by = :APP_USER; -- 可选:插入完成后清理当前会话的临时文件,避免占用资源 DELETE FROM apex_application_temp_files WHERE application_id = :APP_ID AND session_id = :APP_SESSION;
- 注意:临时表数据会在会话结束或超时后自动清理,务必在用户提交后及时执行插入操作,防止数据丢失。
内容的提问来源于stack exchange,提问作者Sullivan Raziel
相关产品推荐
相关产品推荐

