Como subir archivos en CodeIgniter

Desde 99points.info hemos encontrado una explicación muy sencilla para subir archivos usando CodeIgniter. Aquí va la traducción que os ofrecemos:

CodeIgniter contiene un numero de librerías y ‘helpers’ que podemos usar para que tu código sea seguro y para que no tenga fallos. Además, provee de una amplia librería de clases de uso común.

Entre ellas está Upload, que es una clase que nos proporciona una forma fácil y sencilla para servir archivos al servidor.

Para subir un archivo a CodeIgniter debemos crear un archivo HTML simple, el cual debería contener un file input y un botón submit o de envío, con un formulario.

Aquí está el código:

echo form_open_multipart('upload/do_upload');
<input type="file" name="myFile" size="40" />
<input type="submit" value="Upload" />

 

Recordar: Usar un form_open_multipart() si estáis usando cualquier uploading en el formulario.

Tu controlador tendrá una función sencilla. Establecerá la configuración del array para definir la ruta para la subida, los tipos de contenido, el tamaño máximo, la altura y anchura de imágenes, etc.

 

 

function do_upload()
{
    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size']    = '100';
    $config['max_width']  = '1024';
    $config['max_height']  = '768';
 
    // You can give video formats if you want to upload any video file.
 
    $this->load->library('upload', $config);
 
    if ( ! $this->upload->do_upload())
    {
        $error = array('error' = $this->upload->display_errors());
 
        // uploading failed. $error will holds the errors.
    }
    else
    {
        $data = array('upload_data' => $this->upload->data());
 
        // uploading successfull, now do your further actions
    }
}

 

 

Si los archivos que están siendo subidos son grandes en tamaño, entonces necesitaréis incrementar Max file en php.ini en vuestro servidor.

9 comentarios en “Como subir archivos en CodeIgniter

    • Borrar un archivo es muy sencillo.

      La sentencia que nosotros usaríamos sería directamente la suministrada por php, es decir ‘unlink’.

      ¿Cómo funciona?
      Vas a comprobar que es muy sencillo.

      Imagina que tienes la ruta del archivo que quieres borrar

      $ruta = 'http://www.mipaginaweb.com/';

      Pues para borrarlo solo necesitas usar la función indiacada

      unlink($ruta);

      Si la ruta no la sabes o va a ser dinámica te recomiendo que uses algo como esto

      $ruta = site_url("controlador/ruta/imagen.jpg");

      Aunque existen muchas formas de acceder a la url o a las diferentes partes de la url. Te dejo un enlace donde te indican muchas maneras de conseguirlo:

      Espero haberte ayudado.

      Un saludo,

      Fran.

    • Siempre puedes aplicar los permiso que desees a la carpeta donde guardas los archivos, para que así solo el admin pueda escribir/leer los archivos de la carpeta, o que los usuarios solo puedan leer, o no.
      Si le das a la carpeta permiso 755, solo el propietario de la carpeta va a poner escribir en ella, y el resto de los usuarios podran ejecutar y leer lo que ella contiene. Así que depende de la seguridad que quieras para tus archivos.
      Espero haberte sido de ayuda 🙂

  • Sin problema Angie! Pues a ver, para almacenar el nombre en la base de datos, necesitarias el nombre del archivo que estamos subiendo. Esto lo conseguimos del del siguiente modo:

    $datos= $this->upload->data(); // la función data() devuelve los datos que se estan subiendo en un array
    $file_name = $upload_data[‘file_name’]; //uno de los parametros dentro del array es file_name
    // que contiene el nombre de la imagen a subir

    Con esto tendríamos en $file_name el nombre de la imagen. Sólo nos quedaría hacer la conexión con tu base de datos y guardarlo en la tabla que quieras guardarlo. Si quieres ayuda para eso, lo pondré en una nueva entrada 😛
    Para cualquier duda ya sabeis donde estamos, además nos encanta poder ayudar!

Deja un comentario