用于下载Excel文件的Php代码无效
我不能下载excel文件,它下载的文件,但它没有一个内容,它的大小是0kb。这是我的html代码用于下载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 /> 这是我下
<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配置获取外部文件。此外,您的文件不存在:。