2011-07-15 3 views
0

以下のコードは、フォルダassets/images/photoAlbumsに画像を保存していますが、フォルダassets/images/photoAlbums/$albumに入れておく必要があります。ファイルをアップロードする際の問題 - おそらくURLのセグメントを渡すことと関係があります

最初にページをロードすると、URLにcontroller/addPhoto/Testingが表示され、addPhotoビューにはユーザーがファイルを選択してサブミットするフォームがあります。これを同じコントローラ機能addPhotoに送信すると、ページを送信するときにのみ、URLにTestingセグメントがなくなり、それがassets/images/photoAlbumsにアップロードされ続ける理由になります。

私はビューをロードするときにセグメントを渡すだけですが、ビューをロードするときにどのようにセグメントを渡すかわかりません。

/** 
    * addPhoto - function which shows the add photo page 
    */ 
    function addPhoto() 
    { 
     $album = $this->uri->segment(3); 

     $config['upload_path'] = './assets/images/photoAlbums/'.$album.'/'; 
     $config['allowed_types'] = 'jpg|jpeg|pjpeg'; 
     $config['max_size'] = '2048'; // that's 2MBs 
     $config['max_width'] = '1200'; 
     $config['max_height'] = '1200'; 
     $config['remove_space'] = TRUE; 
     $config['overwrite'] = TRUE; 

     echo "album = ".$album; 
     echo "config = ".$config['upload_path']; 

     $this->load->library('upload', $config); 

     if(!$this->upload->do_upload('userFile')) { // if there are errors... 
      //echo "fail"; 
      $content_data['error'] = array('error' => $this->upload->display_errors()); 
      $content_data['data'] = array('upload_data'=>$this->upload->data()); 
      $content_data['title'] = ' | Rochester Water Ski Show Team'; 
      $content_data['firstName'] = $this->session->userdata('firstName'); 
      $data['sess'] = $this->session; 
      $data['content'] = $this->load->view('member/addPhoto', $content_data, true); 
      $this->load->view('template/admin', $data); 

     } else { // else there are NO errors 
      //echo "success"; 
      $content_data['data'] = array('upload_data'=>$this->upload->data()); 
      $content_data['title'] = ' | Rochester Water Ski Show Team'; 
      $content_data['firstName'] = $this->session->userdata('firstName'); 
      $data['sess'] = $this->session; 
      $data['content'] = $this->load->view('member/addPhoto_success', $content_data, true); 
      $this->load->view('template/admin', $data); 
     } 
    } 

答えて

1

$ this-> uri-> segment(3)でセグメントを取得する必要はありません。あなたがそうであるように、あなたのコントローラーを呼び出す場合

controller/addPhoto/Testingは、あなたの方法で自動的にパラメータをretriveことができます。

function addPhoto($album) { 
    echo $album; // output: 'Testing'; 
} 

$アルバムは、今、あなたのメソッド内すでに利用可能です。

パラメータが多少静的な場合は、フォームメソッドを使用して、​​のように前記パラメータを渡すことができます。

ダイナミックにするには、ロジックを少しひねり、隠しフィールドを使用して名前を渡します。この方法では、パラメータecho form_open('controller/addPhoto')なしでメソッドが呼び出され、$this->input->post('myhiddeninput')でアルバム名を取得します。

私が何か誤解していると感じる場合は、ただ知らせてください。

+0

これは簡単でした。ご協力いただきありがとうございます。 – Catfish