2017-11-04 170 views
0

我正在嘗試編寫一個PHP腳本,它將在客戶端下載一個文件。該文件可以是Excel(xlsx)或JSON。PHP讀取文件和下載不起作用

The URL will look like: 
http://<server>/php/download.php?file=/some/path/file.xlsx&name=file.xlsx&format=xlsx 

而且我的PHP腳本是這樣的:

<?php 
if($_GET['format']==='excel') { 
    header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
} else if($_GET['format']==='json') { 
    header('Content-type: application/json'); 
} 

header("Content-disposition: attachment; filename=".$_GET['name']); 
readfile($_GET['file']); 
?> 

我有雙重檢查,實際文件沒有損壞或任何東西。但是當我使用上面的URL時,會下載一個大小爲0的文件(雖然名稱正確),但顯然這是錯誤的。我的PHP代碼有什麼問題?

+1

請不要使用不安全的(用戶)輸入來從您的服務器提供文件 – DarkBee

+0

URL由我組成(我正在寫前端),並且完全在我的控制之下。所以傳遞給服務器的GET參數不是任意的或者由用戶決定的。回到問題 - PHP中有什麼問題,它無法提供文件? – shikhanshu

+0

我的不好!切換到'error_reporting(E_ALL)'並注意到'readfile()'已被管理員禁用。有沒有其他方法可以在不使用'readfile'的情況下提供文件下載? – shikhanshu

回答

0

我能夠使用echo file_get_contents($filename)而不是readfile這是由服務器管理員禁用。