CodeIgniter - проверка формы с полями и загрузка файла - PullRequest
0 голосов
/ 19 августа 2011

Может быть, я упускаю что-то простое, но я не могу точно получить подтверждение формы.

Как я могу получить подтверждение формы, чтобы проверить проверку файла тоже без

$this->upload->do_upload("fldImage")

Это мой процесс проверки:

if ($this->form_validation->run() == FALSE)
    {
        if ( ! $this->upload->display_errors("fldImage"))
        {
            $error = array('error' => $this->upload->display_errors());
        }
        $this->load->view('submitBlog', $error);
    }
    else
    {
        if ( ! $this->upload->do_upload("fldImage"))
        {
            $error = array('error' => $this->upload->display_errors());
            $this->load->view('submitBlog', $error);
        }
        else
        {
            $data = array('upload_data' => $this->upload->data());
            unset($blog['submit']);
            $imagePath = "uploads/".$data['upload_data']['file_name'];
            $blog['fldImage'] = $imagePath;
            $blog['fldDateAdded'] = $datetime;
            $this->db->insert('tblBlog', $blog); 
            $this->load->view('submitBlogSuccess', $data);
        }
    }

но, конечно, я не могу позвонить

do_upload("fldImage")

без работы

do_upload()

но если изображение допустимо, а другие значения формы - нет, я не хочу загружать изображение.

Ответы [ 2 ]

3 голосов
/ 19 августа 2011

Сначала добавьте следующее правило:

$this->form_validation->add_rule('userfile', 'required|callback__check_ext');

И следующая функция обратного вызова:

function _check_ext()
{
    if ( ! empty($_FILES['userfile']['name']))
    {

        $ext        = pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION);
        $allowed    = array('jpg', 'png');

        if ( ! in_array(strtolower($ext), $allowed))
        {
            $this->form_validation->set_message('_check_ext', 'Extension not allowed');
            return FALSE;
        }

    }   
    return TRUE;
}

Концепция заимствована у PyroCMS. При необходимости измените.

Примечание: проверка на MIME-типы, вероятно, является лучшим подходом, дайте мне знать, если вам нужна помощь с этим.

0 голосов
/ 14 марта 2013

Ну, я надеюсь, что я не ошибаюсь в своем ответе.У меня похожая проблема.Я хотел быть гибким с посетителем моего сайта.Это означает, что если пользователь хочет загрузить фото / файл, это нормально, это не должно быть проблемой.Технически мне было трудно разобраться, выбрал ли пользователь файл для загрузки или нет.Я ищу много форумов и блогов, и во всем я нахожу решение, которым я хочу поделиться здесь.Пожалуйста, дайте мне знать, если я ошибаюсь;

if(empty($_FILES['userfile']['name']))
{
   // Perform the Normal Uploading without the File
}
else
{
   // Perform the uploading with the File
}

Мне потребовалось много времени, чтобы разобраться с этим.Если вы найдете это не подходящим способом, дайте мне знать, чтобы исправить мою технику.

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