martes, 19 de febrero de 2019

Como mostrar imagenes almacenadas en una base de datos en CakePhp 3.7

CakePhp Display image from database.

Esta es la solución definitiva.   Hay varias maneras de hacerlo:

Supongamos el siguiente escenario: Tenemos una base de datos en MySql 8.15 que tiene una tabla llamada fotos que tiene, entre otros campos, uno llamado foto_grd.

Corre por tu cuenta cargar registros correctamente.  Yo lo hice con Faker (un generador de datos de prueba). Creo que también puedes usar el MySql Workbench...

Por el método GET

Generamos el código usando bake, para fotos.

En fotosController:

    public function grande($id = null)
    {
        $foto = $this->Fotos->get($id);
        $response = $this->getResponse()->withStringBody(new Stream($foto->foto_grd))->withType('jpg');
        $this->viewBuilder()->setLayout(null);
        return $response;
    }


En el template fotos/view.ctp

       
           
           

Html->image('/fotos/grande/54');  ?>

       


Esto Tiene un problema, y es que entre otras cosas un usuario puede recorrer todas las fotos de la base de datos

La otra manera es mostrar la foto o renderizar, directamente en el tag

En este caso no requerimos del método public function grande($id = null) en el controlador

Asumimos que al template llegan los datos de la foto en un objeto @var \App\Model\Entity\Foto $foto
de modo que esté disponible algo así como $foto->foto_grd

En el template solo debes colocar la siguiente línea de código:



El método stream_get_contents es necesario para rescatar el recurso, si no lo colocas aparecerá algo así como:
Resource id #302

A mi me gusta más la función stream_get_contents, porque si usas $this->getResponse()->withStringBody(new Stream($foto->foto_grd))->withType('jpg');, requiere la librería: 

use Zend\Diactoros\Stream;

Saludos.

Entre más uso otros frameworks más me gusta CakePhp. :-)






  

martes, 12 de febrero de 2019

Dispositivo ACPI\CPL0002 *CPL0002 Dell Inspiron Mini 10v 1011

Después de trabajar mucho para identificar este hardware de una mini laptop dell inpiron con windows 7 32 bits encontré que se trata de un "COMPAL Embedded System Control"que no tengo idea que rayos es.

Lo cierto es que el driver lo encontré en lenovo, sip, en lenovo... me encanta cuando los americanos, los rusos, los alemanes, lenovo, dell, hp... todos usan componentes chinos... |-)

Driver: https://download.lenovo.com/UserFiles/Driver/en/Downloads%20and%20Drivers/B520e/Win7/ID17STW10WW5.exe
en esta pagina: https://support.lenovo.com/ve/es/downloads/ds024586

Saludos. Y ¡comenten coño!  que no les cuesta nada...