我无法下载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;
}
?>
我的代码中是否缺少某些内容?
答案 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');
如果Excel文件的内容包含乱码,请尝试添加ob_clean();
或ob_end_clean();
,然后再保存以下行:$objWriter->save();