用于下载Excel文件的PHP代码无效

时间:2014-08-11 09:44:47

标签: php excel downloading-website-files

我无法下载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;
}
?>

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

3 个答案:

答案 0 :(得分: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).'"');

答案 1 :(得分:0)

只需将这些行添加到您想要在Excel中转​​换的html顶部。确保these lines上方没有打印数据。

答案 2 :(得分: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');

How to use PHPExcel

如果Excel文件的内容包含乱码,请尝试添加ob_clean();ob_end_clean();,然后再保存以下行:$objWriter->save();