Oracle Apex 4.2自定义文件下载错误404 Not Found或403 Forbidden

时间:2017-06-20 12:08:10

标签: blob oracle-apex oracle12c

我正在使用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;

1 个答案:

答案 0 :(得分:0)

根据文档 «Fusion Middleware User's Guide for mod_plsql» 关于 wpg_docload.download_file 我们必须«将行 WindowsFileConversion Off 添加到 DAD 条目。

<块引用>
  1. 打开文件 ORACLE_INSTANCE\config\OHS\ohs1\mod_plsql\dads.conf。

  2. 找到用于访问应用程序的 DAD。

  3. 将行 WindowsFileConversion Off 添加到此 DAD 条目。

  4. 保存文件。

  5. 重启 Oracle HTTP Server。

如果您不更新 DAD 配置,您将在下载文件名中包含 0x5c 的文档时遇到失败。例如:

  • 在 Oracle Portal 中,您将看到下载错误:

Error: Document not found (WWC-46000)

  • 对您自己的 PL/SQL 应用程序使用 mod_plsql 时,文件下载将导致错误:

HTTP-404 Not Found

https://docs.oracle.com/cd/E28280_01/portal.1111/e12041/concept.htm#YPMOD001