Проблема с загрузкой файла - возможно, это связано с передачей сегментов в URL - PullRequest
0 голосов
/ 15 июля 2011

Приведенный ниже код продолжает помещать изображения в папку assets/images/photoAlbums, но я чувствую, что их следует помещать в папку assets/images/photoAlbums/$album.

Когда я впервые загружаю страницу, она отображает URLс controller/addPhoto/Testing, и представление addPhoto просто имеет форму, в которой пользователь выбирает файл и нажимает кнопку «Отправить».Он отправляет его в ту же самую функцию контроллера addPhoto, только когда вы отправляете страницу, у него больше нет сегмента Testing в URL, и по этой причине он продолжает загружать в 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 Ответ

1 голос
/ 15 июля 2011

Вам не нужно извлекать сегмент с помощью $ this-> uri- >gment (3).

Если вы вызываете свой контроллер, как и вы, controller/addPhoto/Testing, вы можете автоматически получить параметр в вашем методе:

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

$ album теперь уже доступен в вашем методе.

Если ваш параметр несколько статичен, вы можете использовать метод формы для передачи указанного параметра, например echo form_open('controller/addPhoto/albumname');.

Если вы хотите, чтобы он был динамическим, то вы можете немного исказить логику и передать имя, используя скрытое поле, таким образом ваш метод будет вызываться без параметров echo form_open('controller/addPhoto'), и вы получите имя альбома через $this->input->post('myhiddeninput') .

Если вы чувствуете, что я что-то неправильно понял, просто дайте знать.

...