【问题标题】:How to Pass input type "file" value onto Codeigniter Controller如何将输入类型“文件”值传递到 Codeigniter 控制器
【发布时间】:2014-06-09 07:39:35
【问题描述】:

这听起来可能很简单,但我真的被困在如何将值传递到 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 随机生成的。这让我上面的逻辑不起作用。

有没有更安全的方法来获取值并准确捕获它,无论它是未选中还是未选中?

谢谢

【问题讨论】:

    标签: php codeigniter file-io


    【解决方案1】:

    首先你必须创建你想要的目录,例如,上传为项目根目录中的目录名。然后配置上传路径、文件大小、文件扩展名等。有关更多详细信息,请参阅链接 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
    }
    

    【讨论】:

    • 我认为是输入/上传文件。我想要实现的只是获取输入类型文件的值(路径或文件名)并将其用作我的 IF 逻辑中的参数。
    • $finfo = $this->upload->data();回声 $finfo['file_name'];
    • 在这种情况下,这是行不通的,因为我只想检索表单中输入类型文件的值并将其捕获到控制器中的变量上。假设我在控制器中有一个名为 $newimage 的变量,无论我是否选择文件,它都应该包含该输入文件的值。
    • 我要试试,很快就会回来更新。我仍然无法想象为什么我必须先 do_upload 才能获得输入类型文件的值,就像你建议我的那样。无论如何,谢谢,非常感谢
    猜你喜欢
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 2016-07-25
    • 1970-01-01
    相关资源
    最近更新 更多