function upload($path){ $config['overwrite'] = TRUE; $config['allowed_types'] = 'jpg|jpeg|gif|png'; $config['max_size'] = 2000; if($path =='profile'){ $config['upload_path'] = '../assets/uploads/avatars'; $config['file_name'] = $this->id; } if($path =='company'){ $config['upload_path'] = '../assets/uploads/company'; $config['file_name'] = $this->id.'_company'; } $this->load->library('upload', $config); $this->upload->do_upload(); $image_data = $this->upload->data(); if($path == 'profile'){ $this->db->update('be_user_profiles',array('avatar' => $image_data['file_name']), array('user_id' => $this->id)); } if($path == 'company'){ $this->db->update('be_user_profiles',array('company_logo' => $image_data['file_name']), array('user_id' => $this->id)); } $config = array( 'source_image' => $image_data['full_path'], 'new_image' => $this->upload_path, 'maintain_ratio' => true, 'width' => 500, 'height' => 500 ); $this->load->library('image_lib', $config); $this->image_lib->resize(); }
Это моя функция загрузки, и она отлично работает, когда $path = 'profile'
, но когда она является company
, она не будет загружаться в папку «компания» … Есть ли причина, по которой это должно быть так ?! Здесь я не понимаю … Эта функция работает, когда она идет в папку аватара, но не если она идет в папку компании …
У меня была аналогичная проблема с несколькими папками. Способ, которым я исправлялся, состоял в использовании функции инициализации вместо передачи конфигурации в качестве аргумента функции библиотеки загрузки.
$this->upload->initialize($config);
Вы можете загрузить библиотеку, затем установить свою конфигурацию и вызвать метод инициализации.
Надеюсь это поможет.
Я думаю, что все предложения действительно хороши, вы также можете убедиться, что вы публикуете правильные данные в своей форме: $ this-> upload-> do_upload (); по умолчанию ожидает, что имя формы будет «userfile»,
также иногда я нахожу, что иногда полезно показывать некоторые ошибки … поэтому вместо просто $this->upload->do_upload();
попробуйте что-нибудь вроде
if (!$this->upload->do_upload($userfile)) { $error = array('error' => $this->upload->display_errors()); $this->load->view('upload_error', $error); }
а затем добавьте файл в ваши представления, называемый upload_error.php, со следующим кодом:
<html> <head> <title>Upload Form</title> </head> <body> <?php echo $error;?> </body> </html>
удачи!
Попробуйте отключить конфигурацию перед установкой другой конфигурации, подобной этой. Следующий код отключает конфигурацию и очищает библиотеку изображений.
Вам нужно очистить свою библиотеку.
//Unset config for the next one unset($config); $this->image_lib->clear();
с//Unset config for the next one unset($config); $this->image_lib->clear();
Из руководства CI …
$ this-> image_lib-> ясно ()
Функция clear сбросит все значения, используемые при обработке изображения. Вы хотите называть это, если вы обрабатываете изображения в цикле.
Хм, вот два предложения:
company
доступна для записи $this->id
возвращается? если он возвращает имя файла с расширением, это приводит к сбою процесса загрузки, потому что тогда у вас будет имя файла my_image.png_company
который не является допустимым типом.