1

我一直在尝试使用代码点火器上传图像,当上传文件夹位于应用程序文件夹之外时,它可以完美运行。但是我的问题是,当我尝试访问位于整个代码点火器文件夹之外的文件夹时,它会给我一个错误。如何访问代码点火器文件夹之外的文件夹?我试过 $_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
            ); 
4

1 回答 1

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]);
于 2013-04-30T14:42:37.697 回答