0

PHPを使用してPDF/DOCファイルをダウンロードしています

これは私のhtmlコードです:

<a title="Download" target="_new" href="includes/pdf_server.php?file=test.pdf">Test PDF</a>

これは pdf_server.php ファイルの私の php コードです

<?php
$file = $_GET["file"];
if (file_exists("../PDF/".$file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header("Content-Type: application/force-download");
    header('Content-Disposition: attachment; filename=' . urlencode(basename($file)));
    // header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize("../PDF/".$file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}
?>

PDFは、test.pdfファイルがあるフォルダーです。リンクをクリックしてファイルをダウンロードすると。ブラウザにはダウンロードするファイルがサイズ (1.4 MB) で表示されますが、ダウンロードが完了してファイルを開くと、ファイルが破損しているか、サポートされていないファイルのいずれかのエラーが表示されます。次に、0バイトを示すプロパティを確認します。

助けてください

4

1 に答える 1

4

これを試して-

<?php
$file_name = $_GET["file"];
if (file_exists("../PDF/".$file_name)) {
    header('Pragma: public');   // required
    header('Expires: 0');       // no cache
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Last-Modified: '.gmdate ('D, d M Y H:i:s', filemtime ("../PDF/".$file_name)).' GMT');
    header('Cache-Control: private',false);
    header('Content-Type: '.'application/pdf');
    header('Content-Disposition: attachment; filename="'.basename("../PDF/".$file_name).'"');
    header('Content-Transfer-Encoding: binary');
    header('Content-Length: '.filesize($file_name));    // provide file size
    header('Connection: close');
    readfile("../PDF/".$file_name);     // push it out
    exit();
}
?>
于 2013-03-28T06:10:04.183 に答える