Проверить, выбрал ли файл или нет, во входных данных: файл - PullRequest
1 голос
/ 12 октября 2011

Как узнать, если выбрать (Choice или Browse...) файл в input:file запустить какой-нибудь код с php?

<form action="#" method="post" enctype="multipart/form-data">
    <input type="file" name="userfile[]" valign="baseline">
</form>


if(select file){
    run my code
}

Обновление:

Я использую Несколько загрузок с JQuery и Code Igniter , когда я не выбираю файл, вывод print_r($_FILES['userfile']);:

Array ([error] =>4 [name] => [size] => 0 [tmp_name] => [type] => [key] => userfile)

[error] => 4 is -> Вы не выбрали файлдля загрузки.

Если я выбрал файл, появится следующая ошибка, если у меня в input:file this: name="userfile[]":

Message: Undefined index: userfile здесь: print_r($_FILES['userfile']);

Обновление 2: Я использую из этих контроллеров, но если не выбрать файл, здесь if ( ! $files ) возвращает значение false и выдает ошибку.я хочу, если пользователь не выбрал файл, не получает ошибку, если

class Upload extends Controller {
    function Upload()
    {
        parent::Controller();
        $this->load->helper(array('form', 'url'));
    }

    function index()
    {    
        $this->load->view('upload_form');
    }

    function do_upload()
    {
   if($_FILE('userfile')){
        $config['upload_path'] = './uploads/'; // server directory
        $config['allowed_types'] = 'gif|jpg|png'; // by extension, will check for whether it is an image

        $config['max_size']    = '1000'; // in kb
        $config['max_width']  = '1024';
        $config['max_height']  = '768';

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

        $files = $this->multi_upload->go_upload();

        if ( ! $files )        
        {
            $error = array('error' => $this->upload->display_errors());
            $this->load->view('upload_form', $error);
        } else {
            $data = array('upload_data' => $files);
            $this->load->view('upload_success', $data);
        }
    }
 redirect('inse/show');
    }        
}

1 Ответ

1 голос
/ 12 октября 2011
<?php
  if (isset($_FILES['my_file_input'])) {
    // your code
  }
?>

ПРИМЕЧАНИЕ: вы описали неверный тип ввода, если я вас правильно понял - при вводе файла следует использовать эту подпись:

<input type="file" name="my_file_input" />

ПРИМЕЧАНИЕ: для формы, в которой находится входной файл, должен быть установлен тип enctype "multipart-form-data" (или что-то подобное).

UPD: Я могу ошибаться, но вот вам контроллер из указанного вами модуля:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Upload extends Controller {
    function Upload()
    {
        parent::Controller();
        $this->load->helper(array('form', 'url'));
    }

    function index()
    {    
        $this->load->view('upload_form');
    }

    function do_upload()
    {
        $config['upload_path'] = './uploads/'; // server directory
        $config['allowed_types'] = 'gif|jpg|png'; // by extension, will check for whether it is an image

        $config['max_size']    = '1000'; // in kb
        $config['max_width']  = '1024';
        $config['max_height']  = '768';

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

        $files = $this->multi_upload->go_upload();

        if ( ! $files )        
        {
            $error = array('error' => $this->upload->display_errors());
            $this->load->view('upload_form', $error);
        } else {
            $data = array('upload_data' => $files);
            $this->load->view('upload_success', $data);
        }
    }    
}
?>

Если вы все еще не получили удовлетворительных результатов, попробуйте var_dump($_FILES); и выясните, как хранятся файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...