codeigniter照片上传提交


codeigniter photo upload submit

我的HTML:

<?php echo form_open_multipart(base_url() . 'user/' . $this->session->userdata['username'] . '/settings/picture'); ?>
    <input type="file" name="photo_data" id="photo_data" value="" />
    <input type="submit" value="Save" name="submit" class="button_ui fr" />
<?php form_close(); ?>

因此,用户进入其设置页面,单击菜单中的图片选项卡,然后显示上面的HTML,并允许用户更新图片。

然后,我进入我的user controller,试图检查用户是否在图片选项卡中,并打印出发送的数据,以便我可以继续对其余部分进行编码。。。但问题是它没有打印我选择上传的图片。。。

我的控制器代码:

if ($this->uri->segment(4) == 'picture'){
    if (isset($_POST["submit"])){
        print_r($_POST);
    }
}

输出:

Array ( [submit] => Save Changes ) 
正如The Maniac所指出的,文件上传存储在$_FILES全局文件中,而不是$_POST。但您甚至不需要将这些与CodeIgniter一起使用(只要它是您正在进行的一个文件上传)。在您的控制器中,您可以使用CI的内置文件上传类:
public function do_upload()
{
    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '100';
    $config['max_width']  = '1024';
    $config['max_height']  = '768';
    $this->load->library('upload', $config);
    // Automatically finds your user's file in $_FILES
    if ( ! $this->upload->do_upload())
    {
        $error = array('error' => $this->upload->display_errors());
        $this->load->view('upload_form', $error);
    }
    else
    {
        $data = array('upload_data' => $this->upload->data());
        $this->load->view('upload_success', $data);
    }
}

如果要上载多个文件,则需要使用$_files执行foreach循环。在他们的文档中了解更多信息。此外,您可以通过以下方式最小化视图中的代码:

<?php 
   echo form_open_multipart('user/'.$this->session->userdata['username'].'/settings/picture'); ?>
   echo form_upload(array('name'=>'photo_data','id'=>'photo_data'));
   echo form_submit('submit','Save');
   echo form_close(); 
?>