0

我想从 oracle 下载 blob 文件,即 PDF 文件,这是我获取和下载文件的代码:

<?php
$conn = ocilogon('user', 'pass', '//localhost/XE');
$sql = "SELECT PDFFILE FROM TFILE";
    $stid = ociparse($conn,$sql);
    ociexecute($stid);
    $rowResult = ocifetch($stid);
    settype($arrayResult,"array");
if($rowResult != null){
            header("Content-Type: application/octet-stream");
            header('Content-Disposition: attachment; filename="' . OCIResult($stid,'PDFFILE') . '"');    
            header("Content-Length: " . filesize(OCIResult($stid,'PDFFILE')->load()));
            header('Content-Disposition: attachment; header("Content-Transfer-Encoding: binary\n");
    }
    ?>

但是当我运行这段代码时,我没有得到 pdf 文件。我的代码有问题吗??

4

1 回答 1

0
header("Content-Type: application/octet-stream");
header('Content-Disposition: attachment; filename="' . OCIResult($stid,'PDFFILE') . '"');    
header("Content-Length: " . filesize(OCIResult($stid,'PDFFILE')->load()));
header('Content-Disposition: attachment; header("Content-Transfer-Encoding: binary\n");

您要发送Content-Disposition标头两次。您甚至可能不需要第二个,客户端应该知道它需要知道的关于来自Content-Type标头的流的所有信息。省略第二个Content-Disposition,这样您就不会覆盖具有文件名的标题。

于 2012-07-08T10:37:38.347 回答