【问题标题】:CodeIgniter form validation does not recognise $_FILESCodeIgniter 表单验证无法识别 $_FILES
【发布时间】:2012-10-05 21:37:49
【问题描述】:

我正在使用自定义表单验证器功能来检查是否正在上传图像类型文件。它非常简单,但无论我尝试什么,我似乎都无法让验证器正确传递变量。

HTML

<input type="file" name="image" /><div><?php echo form_error('image'); ?></div>

控制器

public function postAd(){
    $this->form_validation->set_rules("image", "image", "callback_valid_image");

     if ($this->form_validation->run()==FALSE){
            $this->load->view('header', array('title'=>"Post an ad"));
            $this->load->view('ads/default');
            $this->load->view('footer');
        }else{
            echo "EMPTY";
        }
}

public function valid_image($file){
     echo "RAW:" . $file . "<br />";
     echo "FILE:",$_FILES[$file];
}

我也在 form_validation 语言文件中设置了消息。

无论我输入什么类型的文件,或者如果我将其留空,它都不会在 echo "RAW" 或 echo "FILE" 行显示任何文件。

【问题讨论】:

    标签: php validation codeigniter file-upload


    【解决方案1】:

    要设置您自己的自定义消息,请使用以下函数:

    $this->form_validation->set_message('rule', 'Message');
    

    【讨论】:

      【解决方案2】:

      Form Validation Library 不适用于 $_FILES 数组,仅适用于 $_POST。你应该使用File Uploading Library 并使用类似的东西:

      if (!$this->upload->do_upload()){
          $error = array('error' => $this->upload->display_errors());
          $this->load->view('upload_form', $error);
      }
      else{
          //upload worked.
      }
      

      【讨论】:

      • 我想做这么简单的事情,但我需要作为 BLOB 上传,而不是上传到服务器本身。
      • @JackalopeZero:上传总是作为第一手文件。 Codeigniter 没有提供太多抽象,您可以将其视为 blob。
      猜你喜欢
      • 1970-01-01
      • 2015-10-14
      • 1970-01-01
      • 2013-01-17
      • 1970-01-01
      • 2012-11-18
      • 2017-02-06
      • 2016-09-05
      相关资源
      最近更新 更多