我正在使用Oracle Apex,我有一个表单,可以通过 wwv_flow_files
在表格中上传和存储文件为了下载文件,我使用的是download_my_file
程序当我尝试点击链接并下载错误404时,
我的环境是
Application Express 4.2.6.00.03
Oracle Database 12c企业版12.1.0.2.0版 - 64位生产
Oracle Rest Data Service 3.0.9.348.07.16
感谢任何建议或建议
修改 我检查Apex中的存储过程 Home-> SQL Workshop-> SQL命令 如果我复制并粘贴代码而不是参数,我使用已知的ID,执行成功。
语法 download_my_file?p_file =#ID# url
http://myhost:8080/ords/download_my_file?p_file=24255
错误 404 Not found 。
使用语法 #OWNER#.download_my_file?p_file =#ID# url
http://myhost:8080/ords/mypdb.download_my_file?p_file=24255
错误 403 Forbidden 被引发。
这里要求的EDIT 2:是程序
PROCEDURE download_my_file(p_file in number) AS
v_mime VARCHAR2(48);
v_length NUMBER;
v_file_name VARCHAR2(2000);
Lob_loc BLOB;
BEGIN
SELECT files_mime_type, files_content, files_name, dbms_lob.getlength(files_content)
INTO v_mime,lob_loc,v_file_name,v_length
FROM pub_db0files
WHERE files_id = p_file;
--
-- set up HTTP header
--
-- use an NVL around the mime type and
-- if it is a null set it to application/octect
-- application/octect may launch a download window from windows
owa_util.mime_header( nvl(v_mime,'application/octet'), FALSE );
-- set the size so the browser knows how much to download
htp.p('Content-length: ' || v_length);
-- the filename will be used by the browser if the users does a save as
htp.p('Content-Disposition: attachment; filename="'||replace(replace(substr(v_file_name,instr(v_file_name,'/')+1),chr(10),null),chr(13),null)|| '"');
-- close the headers
owa_util.http_header_close;
-- download the BLOB
wpg_docload.download_file( Lob_loc );
end download_my_file;
答案 0 :(得分:0)
根据文档 «Fusion Middleware User's Guide for mod_plsql» 关于 wpg_docload.download_file
我们必须«将行 WindowsFileConversion Off
添加到 DAD 条目。
打开文件 ORACLE_INSTANCE\config\OHS\ohs1\mod_plsql\dads.conf。
找到用于访问应用程序的 DAD。
将行 WindowsFileConversion Off
添加到此 DAD 条目。
保存文件。
重启 Oracle HTTP Server。
如果您不更新 DAD 配置,您将在下载文件名中包含 0x5c 的文档时遇到失败。例如:
Error: Document not found (WWC-46000)
HTTP-404 Not Found
https://docs.oracle.com/cd/E28280_01/portal.1111/e12041/concept.htm#YPMOD001