set_value不适用于代码点火器上的输入类型文件


set_value not work on input type file on Codeigniter

我正在为我的项目使用 HMVC Codeigniter 模式。在我的项目中,我需要在字段输入类型为文件的表单上设置值。所以,我为他们帮助我解决这个问题感到高兴。

我的控制器正在测试中.php

<?php
class Test extends Controller{
function __construct(){
        parent::__construct();  
    }
function index(){
redirect('test/form');

}
  function form(){
        $this->load->library('form_validation');
        $this->load->helper('url');
        $this->form_validation->set_rules('fname','First Name','required|trim');
        $this->form_validation->set_rules('mname','Middle Name','required|trim');
        $this->form_validation->set_rules('lname','Last Name','required|trim');

        if (empty($_FILES['userfile']['name']))
        {
            $this->form_validation->set_rules('userfile', 'Attach Your File', 'required');
        }
        if($this->form_validation->run($this)){
                    $_SESSION['msg']="Your form has been submitted succesfully!!";
                    redirect('test/form');
                }
                else
                {
                    $_SESSION['err']="Opp! There was some wrong to fill up a form so try again!!!";
                    redirect('test/form');

                }
            }
        $data['pgtitle']='Test';       
        $this->load->view('test',$data);
        } 
}

我的视图文件正在测试中.php

<form action="<?php echo site_url()?>test/form" method="post" enctype="multipart/form-data" onsubmit="return confirm('Do you really want to submit the form?');">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">

    <tr>
      <td width="">Name</td>
      <td width="158"><label for="fname"></label>
      <input type="text" name="fname" id="fname" placeholder="First Name" class='input-row' value="<?php echo set_value('fname')?>"/><span class="required"><?php echo form_error('fname');?></span></td>
      <td width="158"><label for="mname"></label>
      <input type="text" name="mname" id="mname" placeholder="Middle Name" class='input-row' value="<?php echo set_value('mname')?>"/></td>
      <td width="158"><label for="lname"></label>
      <input type="text" name="lname" id="lname" placeholder="Last Name" class='input-row' value="<?php echo set_value('lname')?>"/><span class="required"><?php echo form_error('lname');?></span></td>
    </tr>

    <tr>
      <td>Attach Your File</td>
      <td colspan="2"><label for="userfile"></label>
      <input type="file" name="userfile" id="usefile" value="<?php echo set_value('userfile')?>"/><span class="error"><?php echo form_error('userfile')?></span></td>
    </tr>
    <tr>
      <td><input type="submit" name="submit" id="submit" value="Submit" class="Button" /></td>
    </tr>
  </table>
</form >

Set_value将不起作用,因为验证失败时您正在重定向redirect('test/form');。 您必须在没有重定向的情况下加载form view,否则它将起作用。

if ($this->form_validation->run() == FALSE) { $this->load->view('myform'); }

我发现无法填充

<input type='file />

https://html.spec.whatwg.org/multipage/input.html#file-上传状态-(类型=文件)