cargar foto guardada en la base de datos

45 views
Skip to first unread message

Jose Puertas

unread,
Jun 2, 2016, 5:24:35 PM6/2/16
to ZnetDK
Hola, el problema es que lo que guardo en la base de datos es sólo el nombre y tengo problemas para recuperarla y que se muestre en el formulario al editarlo.

Saludos

Pascal Martinez

unread,
Jun 5, 2016, 5:14:36 PM6/5/16
to ZnetDK
Hola José,

Puedes mostrar una foto en una view simplemente con un elemento HTML <img>.

Por ejemplo :

<img src="<?php echo \General::getURIforDownload('mycontroller', 'edoc=sunflower.jpeg');?>">

Saludos,

Pascal MARTINEZ

Jose Puertas

unread,
Jun 14, 2016, 8:27:50 AM6/14/16
to ZnetDK
Hola Pascal, he intentado como tu me indicas para mostrar en el formulario la foto, pero el caso es que cuando se llama a la función retorna un id = null ya que no se ha indicado el registro del que se quiere cargar la foto, no sé cómo pasarle ese parámetro.

Saludos

<div id="dlg_jugadores" class="zdk-modal" title="<?php echo LC_NOM_EQUIPO; ?>"  data-zdk-confirm="No ha grabado sus cambios, quiere salir?:Si:No">
    <form class="zdk-form" id="mis_jugadores"
          data-zdk-action="jugadoresctrl:enregistrer"
          data-zdk-datatable="table_jugadores">

........

<img src="<?php echo \General::getURIforDownload('jugadoresctrl', 'edoc=');?>">

 static protected function action_download() {
        $request = new \Request();
        $response = new \Response();
        // The file is serached from its database row ID
        $filesDao = new \app\model\StoredFilesDAO();
        $fileInfos = $filesDao->getById($request->file_id);
        if ($fileInfos === FALSE) {
            $response->setFailedMessage("Download",
                "File '{$request->file_id}' is unknown in the database!");
            return $response;
        }
        // The 'location' columns contains the filename of the file stored on
        // the web server
        $storedFile = CFG_DOCUMENTS_DIR . DIRECTORY_SEPARATOR . $fileInfos['location'];
        if (file_exists($storedFile)) {
            $response->setFileToDownload($storedFile, TRUE);
        } else {
            $response->setFailedMessage("Download", "File '{$fileInfos['location']}' not found!");
        }
        return $response;
    }

Pascal Martinez

unread,
Jun 19, 2016, 3:24:08 AM6/19/16
to ZnetDK
Hola José,

Era un ejemplo que tenias que adaptar.
Si el acción download de tu controlador espera el parámetro GET file_id, en tu elemento <img>, cambia edoc por file_id

Ademas, tienes que añadir en tu formulario html un campo oculto que contiene el ID de tu imagen.
Este ID debe cargarse en el mismo tiempo que los otros datos de tu formulario.

Finalmente, cada vez que muestra tu formulario, modifica en JavaScript el elemento <img> para indicar el ID del imagen disponible en tu campo oculto.

Pascal MARTINEZ

Jose Puertas

unread,
Jan 12, 2017, 6:28:09 AM1/12/17
to ZnetDK
Hola Pascal, después de infinidad de pruebas no consigo cargar la foto del usuario en el formulario:

este es el javascript de la vista:

$(function () {        
       
// Refresh the list of stored files
       
var refreshFileList = function() {
           
var uriForDownload = '<?php echo \General::getURIforDownload('jugadoresctrl');?>';
            znetdk
.request({
                control
:'jugadoresctrl',
                action
:'files',
                callback
: function(response) {
                   
//var listElement = $('#list_of_files_formf8 ul'),
                        files
= response;
                   
// listElement.empty();
                 
//   for (i = 0; i < files.length; i++) {
                        $
('#mis_jugadores ul').append('<img src='
                           
+ uriForDownload
                       
//    + '" title="' + files[i].description
                           
+ '>' );
                 
// + files[i].filename + '</a></li>' + '&file_id='}
                   
//+ files.Use_FOTO
               
}
           
});
       
}
       
       
// The file list is loaded when the view is displayed for the 1st time
        refreshFileList
();






       
// No thumbnail displayed when a file is selected
        $
("#mis_jugadores input[name=foto]").zdkinputfile({
            showThumbnail
: true /* thumbnail displayed */
       
});


        $
("#mis_jugadores input[name=foto]").on('change', function () {
           
var selectedFile = $(this).zdkinputfile('getFileName');
            $
("#mis_jugadores input[name=Use_FOTO]").val(selectedFile);


       
});


   
});

estos son los controladores:

static protected function action_files() {
        $request
= new \Request();
        $filesDao
= new \app\model\jugadorDAO();
        $foto
=$request->id_usuario;
        $filesDao
->setFotoUser($foto);
       
// $filePath = CFG_DOCUMENTS_DIR . DIRECTORY_SEPARATOR;
       
//$directorio_escaneado = scandir($filePath);
        $files
= array();
       
// foreach ($directorio_escaneado as $item) {
       
// if ($item != '.' and $item != '..' and $item != 'F11'and $item != 'F8') {
       
//   $files[] = $item;
       
while ($row = $filesDao->getResult()) {
            $files
[] = $row;
       
}
       
//   }
        $response
= new \Response();
       
// The list of stored files is returned
       
        $response
->setResponse($files);
       
return $response;
   
}


   
static public function action_download() {
        $request
= new \Request();
        $rowID
= $request->id_usuario;

        $response
= new \Response();
       
// The file is serached from its database row ID

        $filesDao
= new \app\model\jugadorDAO();
        $fileInfos
= $filesDao->getById($rowID);
       
if ($fileInfos === FALSE) {
            $response
->setFailedMessage("Descargar", "El archivo '{$request->id_usuario}' no existe en la base de datos!");

           
return $response;
       
}
       
// The 'location' columns contains the filename of the file stored on
       
// the web server

        $storedFile
= CFG_FOTOS_DIR . DIRECTORY_SEPARATOR . $fileInfos['Use_FOTO'];
       
if (file_exists($storedFile)) {
           
//$response->setFileToDownload($storedFile, TRUE);
           
return $storedFile;
       
} else {
            $response
->setFailedMessage("Descargar", "El archivo '{$fileInfos['Use_FOTO']}' no ha sido encontrado!");
       
}
     
return $response;
   
}


Gracias por tu ayuda
Message has been deleted

Jose Puertas

unread,
Jan 18, 2017, 5:44:43 AM1/18/17
to zne...@googlegroups.com
Hola, te adjunto captura con el error que me da, la imagen si existe en la ruta especificada.
Cuando doy doble click en el registro o pulso el boton editar ¿donde ejecuta para la visualización del formulario?

Saludos
error 1.png

Pascal Martinez

unread,
Jan 27, 2017, 1:34:52 AM1/27/17
to ZnetDK
Hola José,

Para obtener el URI del imagen a mostrar en una vista, tienes que indicar el identificador de tu imagen.
Por ejemplo en tu caso :

 <img src="<?php echo \General::getURIforDownload('jugadoresctrl', 'id_usuario=18');?>">

Después, en el acción action_download de tu controlador, tienes que devolver el archivo pedido llamando el método setFileToDownload : 

$response->setFileToDownload($storedFile, TRUE);

Saludos,
Pascal MARTINEZ

Jose Puertas

unread,
Feb 4, 2017, 1:16:54 PM2/4/17
to zne...@googlegroups.com
Muchas gracias Pascal, ahora si que la carga, pero ¿Cómo cambio el id_usuario?, he puesto el debuger y no entra en la función download, y no sé cómo pasarle el parámetro.


He intentado pasar el parámetro id_usuario de la siguiente forma, pero no funciona:

<img src="<?php echo \General::getURIforDownload('jugadoresctrl', 'id_usuario='<?php echo (int)$_POST['id_usuario']?>);?>">


Saludos
Reply all
Reply to author
Forward
0 new messages