2017-11-04 90 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这是由服务器管理员禁用。