问答详情
源自:1-9 rename()函数实现重命名文件

为什么重命名失败

/**检查文件名的合法性
 * @param string $filename
 * @return boolean
 */
function checkFilename($filename){
    $pattern="/[\/,\*,<>,\?\|]/";
    if(preg_match($pattern,$filename)){
        return false;
    }else {

        return true;
    }
}


/**重命名文件名
 * @param string  $oldname
 * @param string $newname
 * @return string
 */
function renameFile($oldname, $newname)
{
    //echo $oldname, $newname;
    // 验证文件名是否合法
    if (checkFilename($newname)) {
        // 检测当前目录下是否存在同名文件
        $path = dirname($oldname);
        if (! file_exists($path ."/" . $newname)) {
            // 进行重命名
            if (rename($oldname, $path . "/" . $newname)) {
                return "重命名成功";
            } else {

                return "重命名失败";
            }
        } else {
            return "存在同名文件,请重新命名";
        }
    } else {
        return "非法文件名";
    }
}
?>


$path = "file";

$act = $_REQUEST['act'];

$filename = $_REQUEST['filename'];


else

            if ($act == "renameFile") {

             // 完成重命名

             $str = <<<XGG

<form action="index.php?act=doRename" method="post">

                请填写新的文件名:<input type="text" name="newname" placeholder="重命名" />

                <input type='hidden' name='fileanme' value='{$filename}' />

                <input type="submit" value="重命名" />

                </form>

XGG;

            echo $str;

            } else if ($act == "doRename") {


              // 实现重命名的操作

              $newname = $_REQUEST['newname'];

              $mes=renameFile($filename, $newname);

              alertMes($mes, $redirect);

             }


	<a href="index.php?act=renameFile&filename=<?php echo $p;?>"><img alt=""
						src="images/rename.png" title="重命名" /></a>


提问者:人艰不拆8 2017-02-21 16:27

个回答

  • Gemma_Tong
    2017-03-16 10:44:00

    input type='hidden' name='fileanme' value='{$filename}' />

    隐藏域的这个name打错了,是 filename,不是fileanme

  • _魚的眼淚_
    2017-03-13 21:03:56

    ...$path=dirname($oldname);  这里dirname() 这个函数返回的是文件目录的名字 不是返回文件前面的路径