Загрузка Codeigniter необязательно - PullRequest
1 голос
/ 16 января 2012

Я искал это в Google и разные ответы на stackoverflow.И, вероятно, в них есть хороший ответ, но все же я не понимаю, как я могу реализовать его в своем собственном коде.

У меня есть своя публичная функция для загрузки изображения, но теперь я хочу, чтобы это былонеобязательный.В данный момент кто-то должен загрузить файл, чтобы пройти проверку, как я могу сделать это необязательным?

моя функция:

public function _do_upload_image()
{
    $config['upload_path'] = './company_images/';
    $config['allowed_types'] = 'jpg|jpeg|png';

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

    if (!$this->upload->do_upload())
    {
        $this->form_validation->set_message('_do_upload_image', $this->upload->display_errors());
    }
    else
    {
        $this->_upload_data = $this->upload->data();
    }

}

Заранее спасибо

-edit -

Для других людей ответ сработал, и я присвоил своему file_name другое имя, когда не было загруженного изображения.Это выглядит так:

public function _do_upload_image()
{
    $config['upload_path'] = './company_images/';
    $config['allowed_types'] = 'jpg|jpeg|png';
    $returnArr = array();

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

    if (!$this->upload->do_upload())
    {
        $returnArr = array('file_name' => 'leeg.jpg');
    }
    else
    {
        $returnArr = $this->upload->data();
    }

    $this->_upload_data = $returnArr;
}

Ответы [ 2 ]

1 голос
/ 16 января 2012

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


public function _do_upload_image()
{
    $config['upload_path'] = './company_images/';
    $config['allowed_types'] = 'jpg|jpeg|png';
    $returnArr = array(); 

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

    if ($this->upload->do_upload())
    {
        $returnArr  = $this->upload->data();
    }
    return $returnArr; //just return the array, empty if no upload, file data if uploaded
}

Надеюсь, что имеет смысл

0 голосов
/ 11 мая 2013

загрузка файла codeigniter опционально ... отлично работает .....:)

---------- контроллер ---------

function file()
{
 $this->load->view('includes/template', $data);
}

function valid_file()
{
 $this->form_validation->set_rules('userfile', 'File', 'trim|xss_clean');

 if ($this->form_validation->run()==FALSE) 
 {
    $this->file();
 }
 else
 {
  $config['upload_path']   = './documents/';
  $config['allowed_types'] = 'gif|jpg|png|docx|doc|txt|rtf';
  $config['max_size']      = '1000';
  $config['max_width']     = '1024';
  $config['max_height']    = '768';

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

  if ( !$this->upload->do_upload('userfile',FALSE))
  {
    $this->form_validation->set_message('checkdoc', $data['error'] = $this->upload->display_errors());

    if($_FILES['userfile']['error'] != 4)
    {
        return false;
    }

  }
  else
  {
    return true;
  }
}

я просто использую эту строку, что делает ее опционально,

if($_FILES['userfile']['error'] != 4)
{
 return false;
}

$_FILES['userfile']['error'] != 4 is for file required to upload.

вы можете сделать ее ненужной, используя $_FILES['userfile']['error'] != 4, тогда она передаст эту ошибку для требуемого файлаи отлично работает с другими типами ошибок, если они есть, с помощью return false , надеюсь, это сработает для вас ....

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