PHP 重命名文件(如果存在)

标签 php file if-statement rename exists

我一直在处理图像上传问题,但想知道为什么它不能正常工作?如果文件已存在,则不会移动/上传具有新名称的文件。

if(isset($_REQUEST['submit'])){
     $filename=  $_FILES["imgfile"]["name"];
        if ((($_FILES["imgfile"]["type"] == "image/gif")|| ($_FILES["imgfile"]["type"] == "image/jpeg") || ($_FILES["imgfile"]["type"] == "image/png")  || ($_FILES["imgfile"]["type"] == "image/pjpeg")) && ($_FILES["imgfile"]["size"] < 20000000)){
    $loc = "userpics/$filename";
    if(file_exists($loc)){
        $increment = 0;
        list($name, $ext) = explode('.', $loc);
        while(file_exists($loc)) {
            $increment++;
            $loc = $name. $increment . '.' . $ext;
            $filename = $name. $increment . '.' . $ext;
        }
      move_uploaded_file($_FILES["imgfile"]["tmp_name"],"userpics/$loc");

    }
    else{
      move_uploaded_file($_FILES["imgfile"]["tmp_name"],"userpics/$filename");

    }
     }
     else{
    echo "invalid file.";
     }
}

最佳答案

您已将文件夹路径包含在 $loc 中,然后尝试将文件移动到 userpics/$loc,这可能是不正确的。查看评论:

$filename = "example.jpg";
$loc = "userpics/$filename";
if(file_exists($loc)){
    $increment = 0;
    list($name, $ext) = explode('.', $loc);
    while(file_exists($loc)) {
        $increment++;
        // $loc is now "userpics/example1.jpg"
        $loc = $name. $increment . '.' . $ext;
        $filename = $name. $increment . '.' . $ext;
    }

    // Now you're trying to move the uploaded file to "userpics/$loc"
    //   which expands to "userpics/userpics/example1.jpg"
    move_uploaded_file($_FILES["imgfile"]["tmp_name"],"userpics/$loc");
} else {
    // ...

作为一般调试技巧,始终检查函数的返回值以查看其是否成功。其次,如果函数失败,则显示函数的输入值。这将使调试变得更加容易。

关于PHP 重命名文件(如果存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24292761/

相关文章:

android - 如何在 Android 上创建文本文件并将数据插入该文件

html - 在 jquery onclick 按钮中使用条件

php - 查找两个 # 值之间的差异,其中 itemname = 对于一个特定的 id 相同

javascript - 使用 Javascript 和 Jquery 进行简单的产品过滤

java - 在 Java 中,如何将 XML 解析为字符串而不是文件?

file - 需要处理并加载到配置单元中的自定义定界符

java - 如果生命游戏中的语句重置板而不是遵守规则

java - 在 if-else 语句期间进行转换

php - 维基百科使用什么进行文本和修订差异

php - 在 PHP 中使用正则表达式将多行字符串转换为多元素数组