Codeigniter,测试文件上传器是否有文件

时间:2016-01-28 10:15:42

标签: php codeigniter

我在视图中有以下代码:

if (isset($stockists)) {
    $id = $stockists->ID;
    echo form_open_multipart($system_settings['admin_folder'].'/stockists/form/'.$id);
} 
else {
    echo form_open_multipart($system_settings['admin_folder'].'/stockists/form/');
}

 <?php echo "<input type='file' name='userfile' size='20' />"; ?>

其中有很多其他文本输入字段在提交时发送到数据库。文件加载器是我感兴趣的。

在我的控制器功能中,如何在提交后检查上传器中是否存在文件?

以下重演错误: $image = ($_FILES['userfile']);

如果上传者中存在文件,我需要检查条件语句。例如:

if ($_FILES['userfile']) {
  //do
}

但这种方法不起作用。

1 个答案:

答案 0 :(得分:2)

超级全球$ _FILES

$_FILES['userfile']不是布尔值。

if (strlen($_FILES['userfile']['tmp_name']) > 0) {
    // Yes, is uploaded
}

在数组中,您还error

echo $_FILES['userfile']['error'];

CodeIgniter方法

CodeIgniter有一个上传类,可以为您完成工作。

  

CodeIgniter的文件上传类允许上传文件。您可以设置各种首选项,限制文件的类型和大小。

下面是CodeIgniter文档中的示例:

<?php

class Upload extends CI_Controller {

    function __construct()
    {
        parent::__construct();
        $this->load->helper(array('form', 'url'));
    }

    function index()
    {
        $this->load->view('upload_form', array('error' => ' ' ));
    }

    function do_upload()
    {
        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '100';
        $config['max_width']  = '1024';
        $config['max_height']  = '768';

        $this->load->library('upload', $config);

        if ( ! $this->upload->do_upload())
        {
            $error = array('error' => $this->upload->display_errors());

            $this->load->view('upload_form', $error);
        }
        else
        {
            $data = array('upload_data' => $this->upload->data());

            $this->load->view('upload_success', $data);
        }
    }
}
?>

有关完整示例,请参阅文档:CI File Upload Class