#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