Проверка Codeigniter не работает при загрузке нескольких изображений с использованием одного входа - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь загрузить несколько изображений в codeigniter, используя один ввод, и он работает нормально, но я также хочу добавить проверку codeigniter в это поле ввода, но это не работает.Вот мой HTML-код,

<input type="file" name="images[]" id="file" multiple="">

А Вот мой кодовый код,

if (empty($_FILES['images']['name']))
{
    $this->form_validation->set_rules('images', 'Item Image', 'required');
}

Может кто-нибудь сказать, почему эта проверка не работает, когда я пытаюсь изменить имя изображения на изображения []в codeigniter это всегда говорит, что изображение требуется, а изображение выбрано.

Ответы [ 4 ]

0 голосов
/ 25 февраля 2019

Создайте функцию проверки самостоятельно с помощью обратного вызова:

public function index()
{
    $this->load->helper('file');
    $this->load->library('form_validation');
    if($this->input->post('submit'))
    {
        $this->form_validation->set_rules('file', '', 'callback_file_check');
        if($this->form_validation->run() == TRUE)
        {
            // Upload
        }
    }
    $this->load->view('upload');
}

public function file_check($str)
{
    $allowed_mime_type_arr = array('image/gif','image/jpeg','image/png');
    $mime = get_mime_by_extension($_FILES['file']['name']);
    if(isset($_FILES['file']['name']) && $_FILES['file']['name']!="")
    {
        if(in_array($mime, $allowed_mime_type_arr))
        {
            return TRUE;
        }
        else
        {
            $this->form_validation->set_message('file_check', 'Please select only gif/jpg/png file.');
            return FALSE;
        }
    }
    else
    {
        $this->form_validation->set_message('file_check', 'Please choose a file to upload.');
        return FALSE;
    }
}
0 голосов
/ 25 февраля 2019

Попробуйте этот код

if (count($_FILES['images']['name']) == 0)
{
     $this->form_validation->set_rules('images', 'Item Image', 'required');
}
0 голосов
/ 25 февраля 2019

Ваше входное имя name = "images []" Так что попробуйте это ...

$this->form_validation->set_rules('images[]', 'Item Image', 'required');

Так что вы можете вызвать проверку формы, когда у вас нет файлов на POST.

if(count($_FILES['images']['name']) < 1) {
    $this->form_validation->set_rules('images[]', 'Item Image', 'required');
}else {
   // upload files
}
0 голосов
/ 25 февраля 2019

Попробуйте применить проверку на счет $_FILES['images']['name'].

if (count($_FILES['images']['name']) < 1)
{
   $this->form_validation->set_rules('images', 'Item Image', 'required');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...