2016-11-01 33 views
1

我在这里做了一个文件下载器我在下载成功下载的excel文件,但是当我打开文件时,它给了我下面提到的错误 Excel无法打开文件,因为文件格式或文件扩展名无效什么是拨错回事使用php下载excel文件后它给出了错误

<?php 

    if (isset($_POST['file_name'])) { 

     $file_name = $_POST['file_name']; 

     header('Content-type: application/octet-stream'); 
     header('Content-Disposition: attachment; filename="'.$file_name.'"'); 
    readfile('mystery_folder/'.$file_name); 
    exit(); 
    } 

?> 

<form action="indexa.php" method="post" name="downloadform"> 

<input name="file_name" value="My Tracker.xlsx" size="50" type="text"> 
<input type="submit" value="Download"> 

</form> 
+0

注意:'FILE_NAME = .. /。 ./../ etc/passwd'不好。 – Federkun

+0

我已经尝试过,但仍然是相同的结果 –

回答

0

这不是一个好主意,在文件名使用空间:

value="My Tracker.xlsx" 

这可能不是实际下载的文件,因为缺乏能够f ind it。您应该重命名没有空间的文件。

+0

我试过MyTracker.xlsx,但同样的问题 –

+0

你是否确定这是正确的文件名(区分大小写)?你是否也确定你的服务器被允许提供XLSX文件?我不确定这一点,但XLS是网页下载的首选格式。您可能需要将文件保存为旧版本,然后以此方式尝试。 – durbnpoisn

+0

以及我在本地主机 –

0

尝试改变内容类型:

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 

,并添加:

header('Content-Transfer-Encoding: binary'); 

此样品为我工作:

$file = 'sample.xlsx'; 
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
header('Content-Disposition: attachment; filename='.basename($file)); 
header('Content-Transfer-Encoding: binary'); 
readfile(sprintf('./%s', $file)); 
+0

我已经改变了这个(application/octet-stream)但仍然是同样的问题 –

+0

请看编辑 –

+0

对不起bro打开文件后仍然给出文件格式和文件扩展名无效的错误 –