Blog

Varias imágenes al tiempo de file uploading de codeigniter

Web

En ocasiones es necesario hacer un doble Upload en nuestros formularios, me he topado con el incómodo problema de que la librería File Uploading de Codeigniter sólo permitía subir una imagen por formulario, o en el peor de los casos, ambas imágenes quedan con el mismo nombre.

Un típico trozo del código de la llamada a do_upload():

function do_upload($upload_path = '', $allowed_types = '', $filename = '', $redirect_path = ',$file='userfile')
 {
    $config['upload_path']     = $upload_path;
    $config['allowed_types']    = $allowed_types;
    $config['max_size']     = '10240';
    $config['max_width']     = '6000';
    $config['max_height']     = '6000';
    $config['file_name']     = $filename;
    $this->load->library('upload', $config);
    if (!$this->upload->do_upload()) {
      $error = array(
      'error' => $this->upload->display_errors()
    );
    $this->prepare_flashmessage($error['error'], 1);
    redirect($redirect_path, 'refresh');
  }
 }

Un llamado a la función anterior:

Aunque a la función se le envíe un nombre diferente por cada archivo, ambas imágenes una vez creadas quedaban con el mismo nombre, sólo con la diferencia del renombre automático que le coloca un uno (1) al final del nombre del archivo:

Ésto se debe a que una vez inicializada la librería, ésta guarda cierta configuración, entre ella el nombre del Input file (casi siempre es ‘userfile’).

Para solucionar éste error se debe agregar la linea que inicializa de nuevo la librería, de ésta manera se ‘resetea’ la misma:

$this->upload->initialize($config);

Dando como resultado un método:

function do_upload($upload_path = '', $allowed_types = '', $filename = '', $redirect_path = ',$file='userfile')
 {
  $config['upload_path']     = $upload_path;
  $config['allowed_types']    = $allowed_types;
  $config['max_size']     = '10240';
  $config['max_width']     = '6000';
  $config['max_height']     = '6000';
  $config['file_name']     = $filename;
  $this->load->library('upload', $config);

   $this->upload->initialize($config);

   if (!$this->upload->do_upload($file)) {
   $error = array(
    'error' => $this->upload->display_errors()
   );
   $this->prepare_flashmessage($error['error'], 1);
   redirect($redirect_path, 'refresh');
  }
 }

Actualizado el 6 de marzo de 2023

← Volver al blog

¿Hablamos del proyecto que llevará tu empresa a otra galaxia?

Ya sea un sitio nuevo, una campaña de marketing digital o cualquier otro servicio, estamos aquí para ayudarte.

Contáctanos hoy

Preferencias de cookies

Necesarias

Permiten que el sitio funcione y recuerdan tu elección sobre cookies. Siempre activas.

Analítica y marketing

Google Tag Manager y Meta Pixel: nos ayudan a entender cómo se usa el sitio y a medir nuestras campañas.