PHP读取文件和下载不起作用
问题描述:
我正在尝试编写一个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代码有什么问题?
答
我能够使用echo file_get_contents($filename)
而不是readfile
这是由服务器管理员禁用。
请不要使用不安全的(用户)输入来从您的服务器提供文件 – DarkBee
URL由我组成(我正在写前端),并且完全在我的控制之下。所以传递给服务器的GET参数不是任意的或者由用户决定的。回到问题 - PHP中有什么问题,它无法提供文件? – shikhanshu
我的不好!切换到'error_reporting(E_ALL)'并注意到'readfile()'已被管理员禁用。有没有其他方法可以在不使用'readfile'的情况下提供文件下载? – shikhanshu