codigniter: всегда выдает, что вы не выбрали файл для загрузки. не удается обновить

#php

#php

Вопрос:

Здравствуйте, мне нужна помощь, ниже приведен мой код

Это не приводит ни к какому обновлению, кроме ошибки «аватар всегда отображается», вы не выбрали файл для загрузки. не знаю, как это решить, пожалуйста, помогите

     if($this->input->post()){   
    $this->form_validation->set_rules('avatar','avatar','callback_multiple_image_upload|trim');
    $this->form_validation->set_rules('overview','overview','trim');
    $this->form_validation->set_rules('history','history','trim');
    $this->form_validation->set_rules('education','education','trim');
    $this->form_validation->set_rules('joining','joining','trim');
    $this->form_validation->set_rules('hobbies','hobbies','trim');
    $this->form_validation->set_rules('experience','experience','trim');
    $this->form_validation->set_rules('skills','skills','trim');

  /* if($this->input->post('avatar')){
        $this->form_validation->set_rules('avatar','avatar','callback_multiple_image_upload|trim');
    }else{} */
    if($this->form_validation->run())
    {
            // check if avatar is uploaded
        $images = ($this->session->userdata('uploaded_images'))?$this->session->userdata('uploaded_images'):array();
        if($this->session->userdata('uploaded_avatar')){
            $user['avatar'] = $this->session->userdata('uploaded_avatar');
            $this->session->unset_userdata('uploaded_avatar');
        }

        $data = array(
                'avatar' => ($images)?$images[0]['file_name']:'',
                'thumb' => ($images)?$images[0]['thumb']:'',
                'overview' =>$this->input->post('overview'),
                'history' =>$this->input->post('history'),
                'education' =>$this->input->post('education'),
                'joining' =>$this->input->post('joining'),
                'hobbies' =>$this->input->post('hobbies'),
                'experience' =>$this->input->post('experience'),
                'skills' =>$this->input->post('skills'),


        );
        $abc = $this->user_model->update($user_id,$data,'user_id');
        $this->session->set_flashdata('success','User updated successfully');
        redirect('admin/staff/edit/'.$user_id);

    }
}



    public function multiple_image_upload()
{
    $config = array();
    $config['upload_path']          = './uploads/user_avatars/';
    $config['allowed_types']        = 'gif|jpg|png';
    $config['max_size']             = 10000;
    $config['max_width']            = 10240;
    $config['max_height']           = 7680;

    //$images = array();

    if(isset($_FILES['avatar']) amp;amp; ($count = count($_FILES['avatar']['name'])) > 0)
    {
        $files = $_FILES;
        $images = array();
        /* check if folder with year exists*/
        $current_year = date('Y');
        $path = './uploads/user_avatars/'.$current_year;

        if(is_dir($path)){
            /* do nothing */
        }else{
            /* create directory */
            @mkdir( $path , 0755, true );
        }

        $images = array();
        for($i = 0; $i < $count; $i  ) 
        {
            $config['upload_path'] = $path;
            $config['allowed_types'] = 'gif|jpg|jpeg|png';
            $config['max_size'] = '100000';
            $config['max_width']  = '102400';
            $config['max_height']  = '76800';
            $this->load->library('upload', $config);

            if ($this->upload->do_upload('avatar'))
            {
                $data = $this->upload->data();

                /* create thumbnail */
                $this->load->helper('image_thumb_helper');
                generate_image_thumb($data['full_path'],$path,$data['file_name']);

                /* add to database */                   
                $images[$i]['file_name'] = $current_year.'/'.$data['file_name'];
                $images[$i]['thumb'] = $current_year.'/thumb_'.$data['file_name'];
            }else{
                $this->form_validation->set_message('multiple_image_upload',$this->upload->display_errors());
                return false; 
            }    
        }

        $this->session->set_userdata('uploaded_images',$images);
        return true;
    }
    else{

      return true;
    }
}
  

пожалуйста, предоставьте мне решение, я не могу удалить эту ошибку: (

Комментарии:

1. вы получаете такую ошибку при попытке загрузить большой файл. обычно в php.ini ограничение файла установлено на 8M, и если вы попытаетесь загрузить файл большего размера, вы получите эту ошибку. проверьте php.ini для приведенных ниже объектов memory_limit = 32M upload_max_filesize = 24M post_max_size = 32M

2. upload_max_filesize = 750M уже

3. проверьте разрешение папки…

4. Изменить: <?php echo form_open_multipart(‘../post_func’);?>

Ответ №1:

Я думаю, что вы используете многофайловую загрузку. пожалуйста, попробуйте следующий вариант для «for loop»

 for($i = 0; $i < $count; $i  ) 
    {

         $_FILES['avatar_solo']['name'] = $_FILES['avatar']['name'][$i];
            $_FILES['avatar_solo']['type'] = $_FILES['avatar']['type'][$i];
            $_FILES['avatar_solo']['tmp_name'] = $_FILES['avatar']['tmp_name'][$i];
            $_FILES['avatar_solo']['error'] = $_FILES['avatar']['error'][$i];
            $_FILES['avatar_solo']['size'] = $_FILES['avatar']['size'][$i];

        $config['upload_path'] = $path;
        $config['allowed_types'] = 'gif|jpg|jpeg|png';
        $config['max_size'] = '100000';
        $config['max_width']  = '102400';
        $config['max_height']  = '76800';
        $this->load->library('upload', $config);

        if ($this->upload->do_upload('avatar_solo'))
        {
            $data = $this->upload->data();

            /* create thumbnail */
            $this->load->helper('image_thumb_helper');
            generate_image_thumb($data['full_path'],$path,$data['file_name']);

            /* add to database */                   
            $images[$i]['file_name'] = $current_year.'/'.$data['file_name'];
            $images[$i]['thumb'] = $current_year.'/thumb_'.$data['file_name'];
        }else{
            $this->form_validation->set_message('multiple_image_upload',$this->upload->display_errors());
            return false; 
        }    
    }
  

Комментарии:

1. он обновляет все, но удаляет изображение и не обновляет его снова

2. Извините, я вас не понял, вы имеете в виду, вы хотите удалить изображение из существующих файлов. Затем вы можете использовать функцию «unlink ($ abs_path)»

3. Нет, вы меня неправильно поняли, ваши ответы работают так, как я хотел, но это удаляет изображение из базы данных, когда я что-либо обновляю, я этого не хочу

4. Если вы не хотите обновлять изображение, просто не передавайте их в массив $data = array( ‘обзор’ => $this-> input-> post(‘обзор’), ….. ); if($images){ $data[‘avatar’] = $images[0][‘file_name’]; $data[‘thumb’] = $images[0][‘thumb’]; }

5. Я думаю, у вас не возникнет проблемы.. В любом случае добавьте @ перед count. итак, это выглядит как @$ count