0

我无法下载 excel 文件,它会下载文件但它没有内容并且它的大小是 0kb。这是我的html代码。

<h5 style="color: red;">
    <a href="2.php?file=files/Battle_Entry_form.xls" class="links">
        Click here to download A Registration form
    </a>
</h5> <br />

2.php(这是我下载excel文件的php代码)

<?php 
if(isset($_GET['file'])){
    $filename = $_GET['file'];

    header('Content-type: application/vnd.ms-excel');

    header('Content-Disposition: attachment; filename="'.$filename.'"');

    readfile("http://www.caledtech.com/batllewebsite/".$filename);
    exit;
}
?>

我的代码中是否缺少某些内容?

4

2 回答 2

0

readfile的 PHP 手册说:

如果启用了 fopen 包装器,则 URL 可以用作此函数的文件名。有关如何指定文件名的更多详细信息,请参阅 fopen()。请参阅支持的协议和包装器以获取有关各种包装器具有哪些功能的信息的链接、有关其使用的说明以及有关它们可能提供的任何预定义变量的信息。

我认为你应该使用file_get_contents而不是 readfile:

echo file_get_contents("http://www.caledtech.com/batllewebsite/".$filename);

我建议您使用basename作为文件名:

header('Content-Disposition: attachment; filename="'.basename($filename).'"');
于 2014-08-11T10:24:06.237 回答
0

考虑使用 PHPExcel

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$filename.'"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5');
$objWriter->save('php://output');

如何使用 PHPExcel

如果 Excel 文件的内容包含乱码,请尝试在保存之前在此行添加ob_clean();or :ob_end_clean();$objWriter->save();

于 2019-07-03T09:33:50.207 回答