codeigniter照片上传提交

时间:2012-02-24 17:27:02

标签: php codeigniter upload

我的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 ) 

1 个答案:

答案 0 :(得分:1)

正如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循环。在documentation中了解有关它的更多信息。此外,您可以使用以下内容最小化视图中的代码:

<?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(); 
?>