对于文件管理系统,我使用foreach循环输出目录中的所有文件和文件夹。 现在我想通过表单重命名文件和文件夹。 我的代码如下所示:
$file
我的问题是:重命名文件会重命名所有其他文件,包括文件夹。 如何实现只重命名正确的文件? 我知道问题是通过foreeach循环输出的所有文件
{{1}}提供文件或文件夹的路径
{{1}}是文件或文件夹的名称
答案 0 :(得分:1)
一个肮脏的解决方案是在表单中添加一个隐藏字段,其中包含文件的原始名称,并将if条件移出循环,例如:
<form method="post" action="">
<input type="text" name="rename" />
<input type="hidden" name="orginalfilename" value="<?php echo $file; ?>" />
<input type="submit" name="renamefile" value="go" />
</form>
<?php
// RENAME
if($_POST['renamefile'] && $_POST['orginalfilename']) {
$file = $_POST['orginalfilename'];
if(is_dir($dir.'/'.$file)){
rename($dir.'/'.$file, $dir.'/'.$_POST['rename']);
}
else {
rename($dir.'/'.$file, $dir.'/'.$_POST['rename'].'.'.$FileExtension);
}
}
?>