0

我正在做的是一个表格,您可以上传的部分内容是一个文件:

<input type="file" name="userfile" size="20" />

它工作正常,但唯一的问题是,如果用户不选择文件,程序会崩溃。我试图通过在控制器中添加 if 指令来使其不需要:

if ($this->input->post('userfile')) {
            $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);
            $imagen = $this->upload->do_upload();
        }

但是这种糟糕的尝试似乎不起作用,因为$this->input->post('userfile')它不包含任何内容,无论用户是否选择文件。

所以问题是:我怎么知道用户是否选择了一个文件(或没有),以便我可以在我的控制器上正确处理它?

4

2 回答 2

1

在 PHP 中,<input>带有 的元素type="file"将自动填充 PHP 数组 $_FILES 而不是 codeigniter 的$this->input->post()函数查找的 $_POST。

http://php.net/manual/en/reserved.variables.files.php

因此,您可以通过执行以下操作来检查用户是否上传了任何文件:

    if($_FILES['userfile']['error'] == UPLOAD_ERR_OK)
    {
       // A file was uploaded

            $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);
            $imagen = $this->upload->do_upload();
    }
于 2013-08-20T00:47:49.383 回答
1
if($_FILES['userfile']['error'] == UPLOAD_ERR_OK)
{
   // A file was selected and uploaded to the server for further processing
}

error如果您需要提供更广泛的反馈,该字段的其他可能值

于 2013-08-20T00:44:04.610 回答