Diferencia entre revisiones de «Subida de Archivos e Imagenes»

De KumbiaPHP Framework Wiki
Línea 13: Línea 13:
 
=== Creando los Formularios ===
 
=== Creando los Formularios ===
  
El primero paso es crear dos formularios, uno para subir un archivo "zip" y otro para subir una imagen png,gif ó jpg :
+
El primero paso es crear dos formularios, uno para subir un archivo "zip" ó "rar"y otro para subir una imagen png,gif ó jpg :
  
 
<source lang=php>
 
<source lang=php>
  
<!-- archivo /views/archivos/formularios.phtml -->
+
<!-- archivo /views/archivos/index.phtml -->
  
 
<h1>Subida de Archivo</h1>
 
<h1>Subida de Archivo</h1>
 
<?php View::content() ?>
 
<?php View::content() ?>
<?php echo Form::openMultipart() ?>
+
<?php echo Form::openMultipart('archivos/archivo') ?>
     Ingrese un archivo zip :
+
     Ingrese un archivo .zip ó .rar:
 
     <?php echo Form::file('archivo') ?>
 
     <?php echo Form::file('archivo') ?>
 
     <?php echo Form::hidden('oculto') //para saber si se envió el form ?>
 
     <?php echo Form::hidden('oculto') //para saber si se envió el form ?>
Línea 29: Línea 29:
 
<br/>
 
<br/>
 
<br/>
 
<br/>
<h1>Subida de Archivo</h1>
+
<h1>Subida de Imagen</h1>
<?php echo Form::openMultipart() ?>
+
<?php echo Form::openMultipart('archivos/imagen') ?>
 
     Ingrese una imagen .jpg , .gif ó .png :
 
     Ingrese una imagen .jpg , .gif ó .png :
 
     <?php echo Form::file('imagen') ?>
 
     <?php echo Form::file('imagen') ?>
Línea 36: Línea 36:
 
     <?php echo Form::submit('subir') ?>
 
     <?php echo Form::submit('subir') ?>
 
<?php echo Form::close() ?>
 
<?php echo Form::close() ?>
 +
 
</source>
 
</source>
 +
 +
'''NOTA:''' es importante que en ves llamar a '''Form::open()''' se llame a '''Form::openMultipart()''' para que se cree un formulario que permita la subida de los archivos, de lo contrario el framework nos informara de dicho requerimiento :-)
 +
 +
 +
=== Controlador y Acciones ===
 +
 +
Crearemos el controlador ('''ArchivoController''') con tres acciones, la accion '''index''' que solo mostrará el formulario y las acciones '''archivo''' y '''imagen''' para subir archivos e imagenes respectivamente:
 +
 +
<source lang=php>
 +
<?php
 +
 +
class ArchivosController extends AppController {
 +
 +
    public function archivo() {
 +
        View::select('index');  //para mostrar siempre la vista con los formularios
 +
        if (Input::hasPost('oculto')) {  //para saber si se envió el form
 +
            $archivo = Upload::factory('archivo');//llamamos a la libreria y le pasamos el nombre del campo file del formulario
 +
            $archivo->setExtensions(array('zip','rar')); //le asignamos las extensiones a permitir
 +
            if ($archivo->isUploaded()) {
 +
                if ($archivo->save()) {
 +
                    Flash::valid('Archivo subido correctamente...!!!');
 +
                }
 +
            }else{
 +
                    Flash::warning('No se ha Podido Subir el Archivo...!!!');
 +
            }
 +
        }
 +
    }
 +
 +
    public function imagen() {
 +
        View::select('index');  //para mostrar siempre la vista con los formularios
 +
        if (Input::hasPost('oculto')) {  //para saber si se envió el form
 +
 +
            //llamamos a la libreria y le pasamos el nombre del campo file del formulario
 +
            //el segundo parametro de Upload::factory indica que estamos subiendo una imagen
 +
            //por defecto la libreria Upload trabaja con archivos...
 +
            $archivo = Upload::factory('archivo', 'image');
 +
            $archivo->setExtensions(array('jpg', 'png', 'gif'));//le asignamos las extensiones a permitir
 +
            if ($archivo->isUploaded()) {
 +
                if ($archivo->save()) {
 +
                    Flash::valid('Imagen subida correctamente...!!!');
 +
                }
 +
            }else{
 +
                    Flash::warning('No se ha Podido Subir la imagen...!!!');
 +
            }
 +
        }
 +
    }
 +
 +
}
 +
 +
 +
</source>
 +
 +
La libreria Upload se encargará de subir los archivos al directorio '''public/files/upload''' cuando trabajamos con archivos y en el directorio '''public/img/upload''' cuando trabajamos con imagenes, ademas se encargá de realizar validaciones de extensiones, tamaños minimos y maximos de imagenes, peso (tamaño) minimo y/o maximo de los archivos a subir, etc.

Revisión del 01:30 29 sep 2011


Subida de Archivos e Imagenes

Descripción

En el siguiente ejemplo veremos la manera de subir archivos e imagenes con las librerias de kumbiaphp, para efectos del ejemplo vamos a crear dos formularios, uno para subir un archivo y otro para subir una imagen.

Librerias a Utilizar

Upload: libreria de kumbia para la subida de archivos e imagenes, mediante ella se pueden especificar criterios a validar al subir el archivo, como el tamaño maximo que debe tener, las extensiones permitidas, entre otros.

Creando los Formularios

El primero paso es crear dos formularios, uno para subir un archivo "zip" ó "rar"y otro para subir una imagen png,gif ó jpg :

<!-- archivo /views/archivos/index.phtml -->

<h1>Subida de Archivo</h1>
<?php View::content() ?>
<?php echo Form::openMultipart('archivos/archivo') ?>
    Ingrese un archivo .zip ó .rar:
    <?php echo Form::file('archivo') ?>
    <?php echo Form::hidden('oculto') //para saber si se envió el form ?>
    <?php echo Form::submit('subir') ?>
<?php echo Form::close() ?>
<br/>
<br/>
<h1>Subida de Imagen</h1>
<?php echo Form::openMultipart('archivos/imagen') ?>
    Ingrese una imagen .jpg , .gif ó .png :
    <?php echo Form::file('imagen') ?>
    <?php echo Form::hidden('oculto') //para saber si se envió el form ?>
    <?php echo Form::submit('subir') ?>
<?php echo Form::close() ?>

NOTA: es importante que en ves llamar a Form::open() se llame a Form::openMultipart() para que se cree un formulario que permita la subida de los archivos, de lo contrario el framework nos informara de dicho requerimiento :-)


Controlador y Acciones

Crearemos el controlador (ArchivoController) con tres acciones, la accion index que solo mostrará el formulario y las acciones archivo y imagen para subir archivos e imagenes respectivamente:

<?php

class ArchivosController extends AppController {

    public function archivo() {
        View::select('index');  //para mostrar siempre la vista con los formularios
        if (Input::hasPost('oculto')) {  //para saber si se envió el form
            $archivo = Upload::factory('archivo');//llamamos a la libreria y le pasamos el nombre del campo file del formulario
            $archivo->setExtensions(array('zip','rar')); //le asignamos las extensiones a permitir
            if ($archivo->isUploaded()) { 
                if ($archivo->save()) {
                    Flash::valid('Archivo subido correctamente...!!!');
                }
            }else{
                    Flash::warning('No se ha Podido Subir el Archivo...!!!');
            }
        }
    }

    public function imagen() {
        View::select('index');  //para mostrar siempre la vista con los formularios
        if (Input::hasPost('oculto')) {  //para saber si se envió el form

            //llamamos a la libreria y le pasamos el nombre del campo file del formulario
            //el segundo parametro de Upload::factory indica que estamos subiendo una imagen
            //por defecto la libreria Upload trabaja con archivos...
            $archivo = Upload::factory('archivo', 'image'); 
            $archivo->setExtensions(array('jpg', 'png', 'gif'));//le asignamos las extensiones a permitir
            if ($archivo->isUploaded()) {
                if ($archivo->save()) {
                    Flash::valid('Imagen subida correctamente...!!!');
                }
            }else{
                    Flash::warning('No se ha Podido Subir la imagen...!!!');
            }
        }
    }

}

La libreria Upload se encargará de subir los archivos al directorio public/files/upload cuando trabajamos con archivos y en el directorio public/img/upload cuando trabajamos con imagenes, ademas se encargá de realizar validaciones de extensiones, tamaños minimos y maximos de imagenes, peso (tamaño) minimo y/o maximo de los archivos a subir, etc.