Для файловой системы я использую 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 помещается в div с классом echo
, и чтобы немедленно увидеть изменения, я делаю load()
той же страницы index.php
только с содержимым в div с классом dynamic-content
.Потому что в этом div, файлы отображаются.Пользователь сразу видит, что файл переименован.
Но теперь я замечаю, что, когда в каталоге много подкаталогов и файлов, рендеринг файлов становится все медленнее и медленнее.
Существует ли более быстрый способ рендеринга файлов после изменения (переименовывать для каждого примера)?Для меня важно, чтобы каждое изменение было сразу видно пользователю!И если да, то какую структуру я буду использовать?