oracle - 使用 OOS_UTIL_WEB 下载已压缩的文件
问题描述
我刚刚开始玩 Oracle APEX,所以请原谅我。我正在尝试从数据库中下载一组文件,压缩它们,然后让用户通过应用程序下载它们。
我听说 OOS_UTIL_WEB.DOWNLOAD_FILE 可以帮助解决这个问题,所以我已经安装了它并且可以看到包。如果这不是一个好方法,请大喊,对此非常陌生!
下面是我的代码,它选择我想要包含的文件,然后压缩它们。然后,如果我做对了,就会提示下载。
当我尝试在按下按钮时运行代码时,出现错误:
错误:SyntaxError:JSON 中位置 0 的意外标记 P
他们的文档:https ://github.com/OraOpenSource/oos-utils/blob/master/docs/oos_util_web.md#download_file
我看不出我做错了什么,也没有与 APEX 合作到足以知道如何解决它。
我在 Oracle 12c DB 上使用 Apex 版本 18.1.0。
DECLARE
v_ZIP_FILE BLOB;
BEGIN
FOR v_FILE IN ( SELECT DATA_FILENAME,
DATA_CONTENT
FROM MY_MONEY_WEEK_UPLOADS
WHERE USER_ID = :P15_USER_ID )
LOOP
APEX_ZIP.ADD_FILE (
P_ZIPPED_BLOB => v_ZIP_FILE,
P_FILE_NAME => v_FILE.DATA_FILENAME,
P_CONTENT => v_FILE.DATA_CONTENT
);
END LOOP;
APEX_ZIP.FINISH (
P_ZIPPED_BLOB => v_ZIP_FILE );
OOS_UTIL_WEB.DOWNLOAD_FILE (
P_FILENAME => 'Download.zip',
P_BLOB => v_ZIP_FILE );
END;
解决方案
请转到specific page > Advanced > Reload on Submit
并将其更改为Always
。希望这能解决问题。
在 APEX 5.1 或更高版本中,如果 Reload on Submit 设置为“仅用于成功”(默认),它将使用新的优化页面提交流程,并期望从 APEX 引擎返回一个特定格式的 JSON 结果。显然,当您使用覆盖 HTP 缓冲区并发出二进制内容(而不是格式良好的 JSON 结果)的页面进程时,页面上的库不知道如何处理它,因此会导致这种迟钝“意外的令牌 r...”消息。[供参考 - https://joelkallman.blogspot.com/2017/12/errors-when-downloading-file-on-page.html?_sm_au_=isV6WJ02r1MnWkP5]
推荐阅读
- python - 如何在 Django 中批量更新记录?
- android - 我在 Google Play 中的应用不提供自我更新
- java - LIBGdx - 当保存为 PNG 时,我在精灵中得到灰色像素
- paypal - 为 PayPal Express Checkout 付款设置授权
- ubuntu - 如何让 ctrl +c 在 ubuntu 中注销我的用户?
- webpack - Webpack devserver反应路由器BrowerRouter 404
- go - 用反射设置 nil 指针的地址
- excel - 如何在 Excel VBA 中正确关闭用户窗体?
- stripe-payments - 将 iDeal 与 Stripe Connect 集成以拆分付款
- performance - 如何在 Autocannon 中传递标头和 x-www-form-urlencoded 正文