我的服务器上有一个目录,我想用复选框列出其中的所有文件,并在选择后删除或下载它们。
到目前为止,我可以使用此表单列出并删除正常,勾选复选框并按下按钮。但我有时也需要将文件下载到我的本地机器上。通过勾选复选框或右键单击文件名并使用'将文件保存为'在Chrome浏览器中。但我无法让它发挥作用。
如何下载这些文件?
我的页面名为download-ui.php
<?php
if(isset($_POST['Submit']))
{
}
foreach ($_POST['select'] as $file) {
if(file_exists($file)) {
unlink($file);
}
elseif(is_dir($file)) {
rmdir($file);
}
}
$files = array();
$dir = opendir('.');
while(false != ($file = readdir($dir))) {
if(($file != ".") and ($file != "..") and ($file != "download-ui.php") and ($file != "error_log")) {
$files[] = $file;
}
}
natcasesort($files);
?>
<form id="delete" action="" method="POST">
<?php
echo '<table><tr>';
for($i=0; $i<count($files); $i++) {
if ($i%5 == 0) {
echo '</tr>';
echo '<tr>';
}
echo '<td style="width:180px">
<div class="select-all-col"><input name="select[]" type="checkbox" class="select" value="'.$files[$i].'"/>
<a href="download-ui.php?name='.$foldername."/".$files[$i].'" style="cursor: pointer;">'.$files[$i].'</a></div>
<br />
</td>';
}
echo '</table>';
?>
</table>
<br>
<button type="submit" form="delete" value="Submit">Delete File/s</button>
</form><br>
答案 0 :(得分:1)
download-ui.php必须是:
//Only enter if there is some file to download.
if(isset($_GET['name']){
$file = basename($_GET['name']); //change if the url is absolute
if(!$file){ // file does not exist
die('file not found');
} else {
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Transfer-Encoding: binary");
// read the file from disk
readfile($file);
}
}
//your form
这样你就不得不下载文件了。如果您想要更好,可以在点击“下载”时进行AJAX通话。指向该URL,该文件将被异步下载,如:
$.ajax({
url: 'download-ui.php',
type: 'POST',
success: function() {
window.location = 'download-ui.php';
}
});
但是没有AJAX也会有效。
请检查:Download files from server php
希望它有所帮助!