正如The Maniac所指出的,文件上传存储在$_FILES全局文件中,而不是$_POST。但您甚至不需要将这些与CodeIgniter一起使用(只要它是您正在进行的一个文件上传)。在您的控制器中,您可以使用CI的内置文件上传类:
我的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 )
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();
?>