以下のコードは、フォルダ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);
}
}
これは簡単でした。ご協力いただきありがとうございます。 – Catfish