Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 上载文件时出现问题-可能与在url中传递段有关_Php_Codeigniter_Codeigniter Routing - Fatal编程技术网

Php 上载文件时出现问题-可能与在url中传递段有关

Php 上载文件时出现问题-可能与在url中传递段有关,php,codeigniter,codeigniter-routing,Php,Codeigniter,Codeigniter Routing,下面的代码一直将图像放入文件夹assets/images/photoAlbums,但我觉得应该将它们放入文件夹assets/images/photoAlbums/$album 当我第一次加载页面时,它显示带有controller/addPhoto/Testing的url,而addPhoto视图只有一个表单,用户在其中选择一个文件并单击submit。它将其提交给同一个控制器函数addPhoto,仅当您提交页面时,它在URL中不再有测试段,这就是它不断上载到资产/图像/相册的原因 我想我需要做的就是

下面的代码一直将图像放入文件夹
assets/images/photoAlbums
,但我觉得应该将它们放入文件夹
assets/images/photoAlbums/$album

当我第一次加载页面时,它显示带有
controller/addPhoto/Testing
的url,而addPhoto视图只有一个表单,用户在其中选择一个文件并单击submit。它将其提交给同一个控制器函数addPhoto,仅当您提交页面时,它在URL中不再有
测试
段,这就是它不断上载到
资产/图像/相册
的原因

我想我需要做的就是在再次加载视图时传递段,但我不知道在加载视图时如何传递段

/**
    * 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);
        }
    }

您不需要使用$this->uri->segment(3)检索段

如果您这样调用控制器,
controller/addPhoto/Testing
,您可以在方法中自动检索参数:

function addPhoto($album) {
    echo $album;   // output: 'Testing';
}
$album现在已在您的方法中可用

如果您的参数有些静态,您可以使用form方法传递所述参数,如
echo form_open('controller/addPhoto/albumname')

如果您希望它是动态的,那么您可以稍微改变一下逻辑,并使用隐藏字段传递名称,这样您的方法将被调用,而无需参数
echo form\u open('controller/addPhoto')
,您可以通过
$this->input->post('myhiddeninput')
检索相册名称


如果你觉得我误解了什么,就告诉我。

这很简单。谢谢你的帮助。