PHP文件上载路径问题

时间:2015-01-25 10:38:41

标签: php file-upload path

这是我的上传功能的开始代码,

function upload()
{
        $str_path = "../users/$this->user_name/$this->profile_image";

        if (!is_dir("../users")) {
            if (!mkdir("../users")) {
                throw new Exception("failed to create folder ../users");
            }
        }

        if (!is_dir("../users/$this->user_name")) {
            if (!mkdir("../users/$this->user_name")) {
                throw new Exception("failed to create folder ../users/$this->user_name");
            }
        }
}

有一个保存所有网页的主文件夹,即“project”文件夹。我有一个模型文件夹,包含上传功能的类就在那里。然后我有一个处理上传功能的进程文件夹,它在主“project”文件夹中创建文件夹并上传文件。

问题是我也在“projects / users / process”文件夹中使用相同的功能。上传路径是在上传功能中设置的,但是该函数是从两个不同的位置调用的,因此当从“projects / users / process”调用时,它会在“projects / users”文件夹中创建一个文件夹,尽管我需要它来创建文件夹并上传总是在“项目

2 个答案:

答案 0 :(得分:2)

感谢@Masiorama,使用$ _SERVER [' DOCUMENT_ROOT']解决了这个问题。函数的工作代码

public function upload_profile_image($src_path) {

    $base_path = $_SERVER['DOCUMENT_ROOT'] . "/php246/project";

    $str_path = "$base_path/users/$this->user_name/$this->profile_image";

    if (!is_dir("$base_path/users")) {
        if (!mkdir("$base_path/users")) {
            throw new Exception("failed to create folder $base_path/users");
        }
    }

    if (!is_dir("$base_path/users/$this->user_name")) {
        if (!mkdir("$base_path/users/$this->user_name")) {
            throw new Exception("failed to create folder $base_path/users/$this->user_name");
        }
    }        

    $result = @move_uploaded_file($src_path, $str_path);

    if (!$result) {
        throw new Exception("failed to uplaod file");
    }
}

答案 1 :(得分:-1)

使用DIR的绝对路径。然后你可以从任何地方打电话。