对于文件系统,我使用ajax请求重命名目录或文件。
扫描目录中的文件:
$files = array_diff( scandir($dir), array(".", "..", "tmp") );
部分php代码:
if( isset($_POST['new_name']) ){
// code for renaming goes here
echo $_POST['old_name'] . 'renamed to ' . $_POST['new_name'];
exit;
}
要重命名目录或文件,显示文件名,日期,扩展名等...,我使用foreach
,其结构如下所示:
<div class="echo"><div>
<div class="dynamic-content">
foreach($files as $file) {
?>
<!-- Rename-->
<td class="td-rename">
<h4>Rename File/Folder</h4>
Current name: <b><?php echo basename($dir.'/'.$file); ?></b><br />
<form class="rafform" method="post">
<input type="hidden" class="old_name" name="old_name" value="<?php echo $dir . '/' . $file; ?>" />
<input type="text" class="new_name form-control" name="new_name" placeholder="only a-z, A-Z, 0-9, -, _" value="" />
<input type="submit" class="submitmodal rename btn " value="Rename" />
</form>
</td>
<!-- below are coming more `td's` like:-->
<td class="td-filename">
…………
</td>
<td class="td-date">
…………
</td>
<td class="td-extension">
…………
</td>
and so on...
<?php } ?> // end foreach
</div> <!-- end dynamic content-->
我的ajax请求看起来像这样:
$(document).on('submit' , ".rafform" , (function(e) {
e.preventDefault();
$.ajax({
url: "",
type: "post",
data: new FormData(this),
cache: false,
contentType: false,
processData: false,
beforeSend: function () {
window.location.hash='close'; /* show spinner and disappear upload modal */
},
success: function(data) {
$('.dynamic-content').load('index.php .dynamic-content > *');
$('.echo').append(data);
$('.uploadspinner').hide();
$(".echolist").delay(5000).fadeOut(500);
},
});
}));
因此,在每个请求之后:来自PHP的回显被放入类echo
的div中,并且要立即查看更改,我只用相同的load()
来做index.php
类dynamic-content
中的div中的内容。因为在此div中,将渲染文件。用户可以立即看到文件已重命名。
但是现在我注意到,当目录中包含许多子目录和文件时,渲染文件的速度越来越慢。
是否有更快的方法来显示更改后的文件(每个示例重命名)?对我而言,重要的是,用户可以立即看到所有更改! 如果是这样,我将要使用什么结构?