我有2個文本字段和1個文件上傳都是必需的。當我只需要文本字段時,一切正常,但是當我需要文件上傳時,驗證錯誤仍然表示需要文件,即使我選擇了一個文件。任何人都知道我在做什麼錯了?提前謝謝了。CodeIgniter - 文件上傳需要驗證
//視圖
<?php echo form_open_multipart('add'); ?>
<fieldset>
<input type="text" name="name" /><br>
<input type="text" name="code" /><br>
<input type="file" name="userfile" /><br><br>
<input type="submit"value="Add" />
</fieldset>
<?php echo form_close(); ?>
//控制器
public function add() {
$this->form_validation->set_rules('name', 'Name', 'required');
$this->form_validation->set_rules('code', 'Code', 'required');
//$this->form_validation->set_rules('userfile', 'Document', 'required');
//when the above line is active the upload does not go through
if ($this->form_validation->run() == FALSE) {
$data['page_view'] = $this->page_view;
$data['page_title'] = $this->page_title;
$this->load->view('template', $data);
}
else
{
$this->load->library('upload');
if (!empty($_FILES['userfile']['name']))
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$this->upload->initialize($config);
if ($this->upload->do_upload('userfile'))
{
$img = $this->upload->data();
$file_name = $img['file_name'];
$name = $this->input->post('name');
$code = $this->input->post('code');
$this->load->model('create', 'create_model');
$this->create_model->create_entry($name, $code, $file_name);
$data['page_view'] = $this->page_view;
$data['page_title'] = $this->page_title;
$this->load->view('template', $data);
}
else
{
echo $this->upload->display_errors();
}
}
}
}
我有一個建議,更好地插入你的HTML了。 – Red
好吧,我添加了html,它非常基本,但不知道它是否會有所幫助。 – Staysee
這可能是因爲您試圖上傳太大的文件。嘗試上傳較小的文件,如果它工作正常,那麼您可能需要更改'php.ini'中的設置,以便可以上傳更大的文件。另外,如果你想快速調試這個,我建議你在''_FILES'超全局變量上做'var_dump()',看看文件上傳的錯誤代碼是什麼。 –