如何将输入类型“文件”值传递到Codeigniter控制器

时间:2014-06-09 07:39:36

标签: php codeigniter file-io

这可能听起来很简单,但我真的陷入了如何将值传递到Codeigniter控制器上的问题。我的控制器上有一个逻辑,如果输入类型文件的值为空,它将在我的模型的函数A上处理,或者在我的模型的函数B上处理。

像这样:

'if($newimage==''|$newimage==null){
    $this->mymodel->dofullpart();
 }
else{
    $this->mymodel->dopart();
'

我试图通过以下方式在控制器上捕获它:

'$newimage=$this->input->post('imagename');'

但我没有得到任何价值,虽然我打印出来,但没有任何显示。 然后我试着用它来抓住它:

'$newimage=$_FILES['imagename']['name'];' 

是的,当我选择任何文件时检索到的值成功,而在我没有选择任何文件时检索不到。

另一个问题来了,每当我编辑我的表单的其他部分,除了选择图像,$ newimage总是得到的值包括两个字符,如''Ut'或'Yt',我怀疑它是由$ _FILES随机生成的。它使我的逻辑不起作用。

是否有更安全的方法来获取值并精确捕捉它是否未被选中或选择?

谢谢

1 个答案:

答案 0 :(得分:0)

首先,您必须创建名称所需的目录,例如,在项目的根目录中上载目录名称。然后配置上传路径,文件大小,文件扩展名等。有关详细信息,请参阅链接File Upload document from ellislab和我的以下代码。

$this->form_validation->set_rules('filename_in_html_input', 'filename_in_html_input', 'required');

//以上一行用于验证。

$config['upload_path'] = 'uploads/';
$this->load->library('upload', $config);
$this->upload->initialize($config);
$this->upload->set_allowed_types('gif|jpg|png|jpeg|zip|pdf|doc|docx');   
if (!$this->upload->do_upload('filename_in_html_input')) 
        {
        //error message
        }
 else
{
$this->upload->do_upload('filename_in_html_input')
//upload process
}