2016-11-01 30 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打開文件後仍然給出文件格式和文件擴展名無效的錯誤 –