我列出子目录中的文件并尝试下载它们。下面是我的剧本。下载弹出窗口,但它显示0大小并下载空文件。但是当我将$目录设置为root而不是子目录文件夹时,下载工作并保存带有内容的文件。请帮忙,如何通过将$ directory设置为子目录来下载以下脚本的文件。
的index.php
$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>';
browserProcess.php
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;
}
答案 0 :(得分:0)
@Marc B评论是正确的。您允许用户下载服务器上的任何文件。
您下载的文件始终为空的原因是browserProcess.php正在查找错误的目录。在index.php中,您扫描'./folder'目录,而browserProcess.php在'./'而不是'./folder'中查找文件。
如果您正在使用此脚本来了解文件操作并了解如何提供文件以供下载,那么只要您知道这不是可以投入生产的代码或项目,因为它包含巨大的安全漏洞。