Facebook Fanpage


  • Enviar formulario con ajax jquery

    En el siguiente ejemplo, os mostraré como enviar un formulario vía AJAX, este proceso facilitará las consultas necesarias a PHP, todo ello...
  • Descifrando la Seguridad: El Fascinante Mundo de los Criptosistemas de Clave Pública

    Entrada 1: La Revolución de la Criptografía Asimétrica¿Alguna vez te has preguntado cómo puedes enviar información confidencial a través de internet...
  • Cómo configurar un servidor FTP sobre CentOS 7

    Instalación y puesta en marcha de vsftpd Instalar vsftpd en CentOS 7 es sencillo, en esta versión todavía se sigue usando Yum, el gestor de...
  • Oracle Dumpdir – Import, Export y el uso de Directorios.

    Oracle Dumpdir  Import, Export y el uso de Directorios. Cuando tenemos diferentes objetos de la base, ya sea una tabla, datos, etc y...
  • Solución a ORA-65096: invalid common user or role name en Oracle

    Solución a ORA-65096: invalid common user or role name en Oracle Hola a todos, hoy explicaré como solucionar un problema común en Oracle al...
  • Asignar permisos correctos a carpetas 755 y ficheros 644 de forma masiva

    Asignar permisos correctos a carpetas 755 y ficheros 644 de forma masiva Por defecto, en el FTP de una web los permisos deben ser los siguientes:...
  • Publicar aplicación WAR/JSP/SERVLET/TOMCAT/MYSQL en servidor dedicado/vps cPanel

    Publicar aplicación war con conexión a mysql.1. Ingresar al cPanel2. En la opción "Mysql Bases de datos", crear una base de datos, un usuario de...
  • Generar jar con NetBeans incluyendo Bibliotecas Externas Java

    Hola amigos, después de buscar un poco acerca de como incluir las librerías que utilizamos en nuestros proyectos Java...
  • Subir imagen al servidor con Yii Framework y eliminar imagenes del servidor

    En esta ocacion les traigo la manera de como subir imagenes al servidor y una ves subidas las imagenes como eliminarlas del servidor, este ejemplo es...
  • crear host virtual

    Cómo crear un VirtualHost en ubuntu y apache En este post veremos qué es y cómo crear un virtual host utilizando ubuntu y apache. ¿Qué es un...
  • Enviar formulario con ajax jquery

    En el siguiente ejemplo, os mostraré como enviar un formulario vía AJAX, este proceso facilitará las consultas necesarias a PHP, todo ello...
  • Descifrando la Seguridad: El Fascinante Mundo de los Criptosistemas de Clave Pública

    Entrada 1: La Revolución de la Criptografía Asimétrica¿Alguna vez te has preguntado cómo puedes enviar información confidencial a través de internet...
Previous Next

viernes, 18 de enero de 2013

Subir Imagen con Yii Framework


Con esto podremos subir una imagen a una carpeta de nuestro sitio y guardar el path en la base datos, incluyendo la posibilidad de realizar una actualizacion.-

Para esto deberemos modificar la Vista, el Modelo y el Controlador.

Vista:
archivo _form.php

Código PHP:
..//array de opciones del form...'htmlOptions' => array(
        
'enctype' => 'multipart/form-data',
    ),
...
..
//Otros Elementos..
..
<
div class="row">
        <?
php echo $form->labelEx($model,'imagen'); ?>        <?php echo CHtml::activeFileField($model'imagen'); ?>  //con esto levantamos la imagen
        <?php echo $form->error($model,'imagen'); ?></div>
<?php if($model->isNewRecord!='1'){ ?><div class="row">
     <?php echo CHtml::image(Yii::app()->request->baseUrl.'/banner/'.$model->imagen,"imagen",array("width"=>200)); ?>  // La Imagen se muestra aquí si la página es la página de actualización
</div>
..
..
Otros elementos
..
.. 

Modelo:
solo es necesario agregar una linea en el metodo rules() en el Modelo, de la siguiente manera:

Código PHP:
array('imagen''file','types'=>'jpg, gif, png''allowEmpty'=>true'on'=>'update'), 
esto permitirá campo vacío cuando la página es la actualización

para todas las demás normas que le tiene que dar un escenario para insertar y actualizar, según la regla se aplicará tanto en la página (Insert y Update)

Código PHP:
array('titulo, imagen''length''max'=>255'on'=>'insert,update'), 

.. .. ahora viene la parte principal,

Controlador:
En el controlador Create subiremos la imagen con nombre aleatorio y guardamos la entrada en la base de datos.-

Código PHP:
public function actionCreate()
    {
        
$model=new Banner;  // este es el modelo relacionado a la tabla
        
if(isset($_POST['Banner']))
        {
            
$rnd rand(0,9999);  // Generamos un numero aleatorio entre 0-9999
            
$model->attributes=$_POST['Banner'];

            
$uploadedFile=CUploadedFile::getInstance($model,'imagen');
            
$fileName "{$rnd}-{$uploadedFile}";  // numero aleatorio  + nombre de archivo
            
$model->imagen $fileName;

            if(
$model->save())
            {
                
$uploadedFile->saveAs(Yii::app()->basePath.'/../banner/'.$fileName);  // la imagen se subirá a la carpeta raiz /banner/
                
$this->redirect(array('admin'));
            }
        }
        
$this->render('create',array(
            
'model'=>$model,
        ));
    } 

Ahora viene la parte de la accion de actualizar

Código PHP:
public function actionUpdate($id)
    {
        
$model=$this->loadModel($id);

        if(isset(
$_POST['Banner']))
        {
            
$_POST['Banner']['imagen'] = $model->imagen;
            
$model->attributes=$_POST['Banner'];

            
$uploadedFile=CUploadedFile::getInstance($model,'imagen');

            if(
$model->save())
            {
                if(!empty(
$uploadedFile))  // checkeamos si el archivo subido esta seteado o no
                
{
                    
$uploadedFile->saveAs(Yii::app()->basePath.'/../banner/'.$model->imagen);
                }
                
$this->redirect(array('admin'));
            }

            if(
$model->save())
                
$this->redirect(array('admin'));
        }

        
$this->render('update',array(
            
'model'=>$model,
        ));
    } 

En este ejemplo subimos una imagen a una carpeta especifica e introducimos la entrada en la base de datos. En la actualizacion sobreescribimos la imagen en la carpeta y actualizamos los datos.-

Archivo original desde aqui

1 comentarios:

  1. Hola , antes que todo muchas gracias por compartir esta info, estuve siguiendo tus instrucciones, pero tengo un problema, resulta que al crear un registro con imagen, crea 4 registros mas en la base de datos, todos con los mismos datos , excepto los 3 últimos que los deja sin imagen

    ResponderEliminar