¿Cómo puedo hacer para mostrar una imagen guardada con datos_tabla::set_blob en un cuadro?
Buen día,
Te paso un ejemplo de como lo trabajo en una tabla de docentes:
function conf__formulario(toba_ei_formulario $form)
{
if ($this->dep('datos')->esta_cargada()) {
$datos = $this->dep('datos')->tabla('docentes')->get();
$fp_imagen = $this->dep('datos')->tabla('docentes')->get_blob('doc_foto');
if (isset($fp_imagen)) {
//Se necesita el path fisico y la url de una archivo temporal que va a contener la imagen
$temp_nombre = md5(uniqid(time()));
$temp_archivo = toba::proyecto()->get_www_temp($temp_nombre);
//-- Se pasa el contenido al archivo temporal
$temp_fp = fopen($temp_archivo['path'], 'w');
stream_copy_to_stream($fp_imagen, $temp_fp);
fclose($temp_fp);
$tamano = round(filesize($temp_archivo['path']) / 1024);
//-- Se muestra la imagen temporal en el formulario
$datos['vista_previa'] = "<img src='{$temp_archivo['url']}' alt = '' width='100px' heigth='100px'>";
$datos['doc_foto'] = 'Tamano: '.$tamano. ' KB';
} else {
$datos['doc_foto'] = null;
}
$form->set_datos($datos);
} else {
$this->pantalla()->eliminar_evento('eliminar');
}
}
function evt__formulario__modificacion($datos)
{
if (is_array($datos['doc_foto'])) {
//Se subio una imagen, la pasamos al campo respectivo
$fp = fopen($datos['doc_foto']['tmp_name'], 'rb');
$this->dep('datos')->tabla('docentes')->set_blob('doc_foto', $fp);
}
$this->dep('datos')->tabla('docentes')->set($datos);
}
Cordial saludo
En un cuadro, te paso un ejemplo pero, los tengo en un directorio, te puedes basar con el ejemplo del formulario para el blob:
function conf__cuadro_candidatos()
{
//$this->dep(‘cuadro_candidatos’)->evento(‘mostrar_foto’)->set_alineacion_pre_columnas(true);
$datos_plancha = $this->get_relacion()->tabla(‘planchas’)->get();
$datos = $this->get_relacion()->tabla(‘candidatos’)->get_filas();
//print_r($datos);
$fila = 0;
foreach ($datos as $candidatos) {
$foto_archivo = null;
foreach ($candidatos as $candidato=>$value) {
if ($candidato == ‘can_usuario’) $identificacion = $value;
if ($candidato == ‘can_archivo’) $foto_archivo = $value;
} //print_r($candidatos);
if ($foto_archivo) $foto_archivo = $candidatos[‘can_archivo’];
else $foto_archivo = ‘0.png’;
$imagen = toba_recurso::imagen_proyecto(‘/’.$datos_plancha[‘pla_programacion’].‘/’.$foto_archivo);
//$imagen = $directorio.$datosTitular[0][‘can_archivo’];
$datos[$fila][‘foto’] = “”;
$fila++;
}
//$datos = rs_ordenar_por_columna($datos, ‘can_orden’);
return $datos;
}
Es un poco diferente a la solución que me pasaste, hay que generar un resource con datos_tabla…get_blob y pasarle el nombre de campo y número de fila por parámetros, sería tal como me pasaste para el método conf__formulario: