如何在foreach循环中输出时重命名文件

时间:2016-05-14 18:59:35

标签: php rename

对于文件管理系统,我使用foreach循环输出目录中的所有文件和文件夹。 现在我想通过表单重命名文件和文件夹。 我的代码如下所示:

$file

我的问题是:重命名文件会重命名所有其他文件,包括文件夹。 如何实现只重命名正确的文件? 我知道问题是通过foreeach循环输出的所有文件

{{1}}提供文件或文件夹的路径

{{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);
    }

}
?>