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

用于下载Excel文件的Php代码无效,php,excel,downloading-website-files,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 /> 这是我下

我不能下载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 />
这是我下载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;
}
?>
我的代码中缺少什么吗?

的PHP手册中说:

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

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

echo file_get_contents("http://www.caledtech.com/batllewebsite/".$filename);
我建议您使用以下文件名:

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

只需将这些行添加到要在excel中转换的html的顶部。确保上面没有打印任何数据。

考虑使用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');

如果Excel文件的内容包含乱码,请尝试添加ob_clean;或彻底清洁;在此行保存之前:$objWriter->save

让我看看。。。。不做任何事情来检查指定的文件是否确实存在,不检查是否有不道德的用户试图下载密码文件,您还需要说明什么错误?可能您从中获取文件的网站不喜欢您的活动,并采取了一些措施。在任何情况下,您了解代码的功能吗?您忽略了一些相当明显的故障排除步骤。@asker,您应该使用本地服务器上的“readfile”我不懂这些代码,我正在修改此网站的前开发人员提供的网站。我发现下载功能只是下载文件,里面没有任何内容。下载后文件大小仅为0kb。excel文件已经在网站上了,我只需要修复下载excel文件的代码。我尝试了你的代码,但也是一样的,下载的文件大小仍然是0kb。你能给我一个下载excel文件的php代码示例吗?我真的需要它。提前谢谢。您是否检查日志中是否没有PHP错误?可能您无法使用PHP配置获取外部文件。此外,您的文件不存在:。