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
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 に答える
1

PHP では、<input>を持つ要素は、 codeigniter の関数がtype="file"参照する $_POST ではなく、PHP 配列 $_FILES に自動的に入力されます。$this->input->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 に答える