php下载文件不工作,正在下载一个空文件
我正在列出子目录中的文件并试图下载它们。下面是我的脚本。下载弹出窗口出现,但显示0大小并下载空文件。但是,当我将$directory设置为root而不是sub-directory文件夹时,下载可以工作并保存包含内容的文件。请帮助,我如何通过将$directory设置为subdirectory来下载带有以下脚本的文件 index.phpphp下载文件不工作,正在下载一个空文件,php,Php,我正在列出子目录中的文件并试图下载它们。下面是我的脚本。下载弹出窗口出现,但显示0大小并下载空文件。但是,当我将$directory设置为root而不是sub-directory文件夹时,下载可以工作并保存包含内容的文件。请帮助,我如何通过将$directory设置为subdirectory来下载带有以下脚本的文件 index.php $directory = "folder"; //this is my sub directory $images = scandir($directory)
$directory = "folder"; //this is my sub directory
$images = scandir($directory);
$ignore = Array(".", "..");
$count=1;
echo '<table border=1>';
foreach($images as $dispimage){
if(!in_array($dispimage, $ignore)){
echo "<tr id='del$count'>
<td>$count</td>
<td>$dispimage</td>
<td><a href=\"browserProcess.php?file=$dispimage\">Download</a>
</tr>";
$count++;
}
}
echo '</table>';
@Marc B的评论是正确的。您允许用户下载服务器上的任何文件 下载的文件总是空的原因是browserProcess.php在错误的目录中查找。在index.php中扫描“./folder”目录,而browserProcess.php在“./”而不是“./folder”中查找文件
如果您使用此脚本来了解文件操作以及如何为下载文件提供服务,那么也可以,只要您知道这不是可以投入生产或项目的代码,因为它包含巨大的安全漏洞。不要使用此代码。您允许用户在您的服务器上下载他们知道路径名的任何文件。这是非常危险的。如果您想让自己打开以进行完整的数据提取,请改用readfilefolder/$file。@MarcB谢谢。子目录不是静态文件夹名称,权限级别因用户而异。我试图动态设置它,就像这个readfileadmin/userDirectories/$user\u id/$file;但是它不起作用,如果我静态地使用子目录文件夹名而不是$user_id,它就起作用了,但是我想动态地使用子目录。你能帮忙吗?
if ($_GET['file']){
$file = $_GET['file'];
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}