2013-04-30 4 views
1

Я пытался загрузить изображения с помощью воспламенителя кода, и он отлично работает, когда папка для загрузки находится за пределами папки приложения. Но моя проблема заключается в том, что когда я пытаюсь получить доступ к папке, которая находится за пределами папки с воспламенением целого кода, она вызывает у меня ошибку. Как получить доступ к папке вне папки воспламенителя кода? Я пробовал $ _SERVER ['DOCUMENT_ROOT']. Но это помогает.access folder out code ignitter

$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 
      ); 
+0

Это очень расплывчато. Нам нужен образец кода, который вы используете, чтобы попытаться получить доступ к внешней папке и образце структуры каталога, которая делает его внешней папкой. – Samutz

+0

Благодарим за обновление сообщения. Действительно ли папка обучения находится в папке document_root или вне ее? – Samutz

+0

Документ корень. Путь подобен этому. www/tuition/tuitionimage/idvalue/ –

ответ

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]); 
+0

На самом деле уже существует папка с именем tat. Это не та проблема –

+0

Я не знаю, что еще вам рассказать. Ошибка говорит, что папка не существует. Я пробовал один и тот же код в одном из моих приложений CI, и он работал нормально. – Samutz