访问文件夹外代码点火器

时间:2013-04-30 14:12:55

标签: codeigniter image-processing

我一直尝试使用代码点火器上传图片,当上传文件夹就在应用程序文件夹之外时,它可以正常工作。但我的问题是,当我尝试访问整个代码点火器文件夹外的文件夹时,它给我一个错误。如何访问代码igniter文件夹之外的文件夹?我试过$ _SERVER ['DOCUMENT_ROOT']。但它有助于帮助。

$name = $_POST['name'];
        $id = $_POST['id'];
        if (isset($_FILES['upload']['name'])) {
            // total files //
            $count = count($_FILES['upload']['name']);
            // all uploads //
            $uploads = $_FILES['upload'];

            for ($i = 0; $i < $count; $i++) {
                if ($uploads['error'][$i] == 0) {
                    $firstimage = $uploads['name'][$i];
                    $secondimage = $uploads['name'][$i];

                    move_uploaded_file($uploads['tmp_name'][$i], $_SERVER['DOCUMENT_ROOT'].'tuition/tuitionimage/'.$id.'/'.$uploads['name'][$i]);
                    $config2['image_library'] = 'gd2';
                    $config2['source_image'] = $_SERVER['DOCUMENT_ROOT'].'tuition/tuitionimage/'.$id.'/'.$uploads['name'][$i];
                    $config2['new_image'] = $_SERVER['DOCUMENT_ROOT'].'tuition/tuitionimage/'.$id.'/thumbnail/'.$uploads['name'][$i];
                    $config2['maintain_ratio'] = FALSE;
                    $config2['create_thumb'] = TRUE;
                    $config2['thumb_marker'] = '_thumb';
                    $config2['width'] = 75;
                    $config2['height'] = 50;
                    $config2['overwrite'] = TRUE;

                    $this->image_lib->initialize($config2);
                    $this->load->library('image_lib',$config2);
                    if ( ! $this->image_lib->resize())
                    {
                        echo $this->image_lib->display_errors();
                    }

                    $config3['image_library'] = 'gd2';
                    $config3['source_image'] = $_SERVER['DOCUMENT_ROOT'].'tuition/tuitionimage/'.$id.'/'.$uploads['name'][$i];
                    $config3['new_image'] = $_SERVER['DOCUMENT_ROOT'].'tuition/tuitionimage/'.$id.'/resize/'.$uploads['name'][$i];
                    $config3['maintain_ratio'] = FALSE;
                    $config3['create_thumb'] = TRUE;
                    $config3['thumb_marker'] = '_thumb';
                    $config3['width'] = 470;
                    $config3['height'] = 470;
                    $config3['overwrite'] = TRUE;

                    $this->image_lib->initialize($config3);
                    $this->load->library('image_lib',$config3);
                    if ( ! $this->image_lib->resize())
                    {
                        echo $this->image_lib->display_errors();
                    }

                    }


            }
            $this->load->view('head');
            $data = array(
                'name' => $name,
                'id' => $id
            ); 

1 个答案:

答案 0 :(得分:1)

在评论中讨论后,问题很可能是move_uploaded_file()函数试图将文件移动到一个尚不存在的目录。

move_uploaded_file($uploads['tmp_name'][$i], $_SERVER['DOCUMENT_ROOT'].'tuition/tuitionimage/'.$id.'/'.$uploads['name'][$i]);

在移动文件之前,需要创建文件夹。如果$ id是新的,则可能尚未创建。所以......

if (!is_dir($_SERVER['DOCUMENT_ROOT'].'tuition/tuitionimage/'.$id)) {
    mkdir($_SERVER['DOCUMENT_ROOT'].'tuition/tuitionimage/'.$id);
}
move_uploaded_file($uploads['tmp_name'][$i], $_SERVER['DOCUMENT_ROOT'].'tuition/tuitionimage/'.$id.'/'.$uploads['name'][$i]);