这可能听起来很简单,但我真的陷入了如何将值传递到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随机生成的。它使我的逻辑不起作用。
是否有更安全的方法来获取值并精确捕捉它是否未被选中或选择?
谢谢
答案 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
}