Perdón!!! con preguntas así, seguro que bajo mis posibilidades de acceder a respuestas!!! PERDON DE NUEVO…
(igual, te cuento que me costó encontrarle la vuelta… MUY patético… es cuestión de conocer un poco más la herramienta)
Igual, te voy a pedir asistencia con la parte “difícil”.
(Copio todo el código por si a alguno puede servirle, aunque seguro requiere alguna corrección).
En el siguiente código recupero en $temp_archivo la foto que está en la Base de datos para guardarla.
Hasta ahí, impecable, salvo que debería según tu recomendación convertir $temp_archivo en una variable de sesión, $s__temp_archivo.
protected $s__temp_archivo
...
...
function conf__formulario_docente(toba_ei_formulario $form)
{
$cant_datos = $this->get_relacion()->tabla('docentes')->get_cantidad_filas();
if ($cant_datos > 0) {
$datos = $this->get_relacion()->tabla('docentes')->get();
$imagen = $this->get_relacion()->tabla('docentes')->get_blob('foto');
if (isset($imagen)) {
$s__temp_nombre = md5(uniqid(time()));
$s__temp_archivo = toba::proyecto()->get_www_temp($temp_nombre);
$temp_imagen = fopen($s__temp_archivo['path'], 'w');
stream_copy_to_stream($imagen, $temp_imagen);
fclose($temp_imagen);
$tamaño = round(filesize($s__temp_archivo['path']) / 1024);
$datos['foto_vista_preliminar'] = "<img src='{$s__temp_archivo['url']}' alt=''>";
$datos['foto'] = 'Tamaño foto actual: '.$tamaño.' kb';
}
$form->set_datos($datos);
} else {
$cfg = dt_cfg_valores_por_defecto::get_configuracion();
$datos['id_documento_tipo'] = $cfg['id_documento_tipo_dni'];
$datos['id_nacimiento_localidad'] = $cfg['id_localidad_bahia_blanca'];
$datos['id_nacionalidad'] = $cfg['id_nacionalidad_argentina'];
$datos['foto'] = null;
$form->set_datos_defecto($datos);
}
}
Para guardarla en la base de datos, hago lo siguiente:
function evt__formulario_docente__modificacion($datos)
{
$this->get_relacion()->tabla('docentes')->set($datos);
if (is_array($datos['foto'])) {
$s__temp_archivo = $datos['foto']['tmp_name'];
$imagen = fopen($s__temp_archivo, 'rb');
$this->get_relacion()->tabla('docentes')->set_blob('foto', $imagen);
}
}
El código para refrescar, finalmente quedó de esta forma:
function evt__formulario_docente__imagen_refrescar($datos)
{
$this->get_relacion()->tabla('docentes')->set($datos);
if (is_array($datos['foto'])) {
//Se subio una imagen
$s__temp_archivo = $datos['foto']['tmp_name'];
$imagen = fopen($s__temp_archivo, 'rb');
$this->get_relacion()->tabla('docentes')->set_blob('foto', $imagen);
}
}
Pero, al intentar eliminar el archivo, y vaciar el ef_fijo que la previsualiza, no logro lo deseado, y tampoco logro que se elimine de la base de datos.
function evt__formulario_docente__imagen_eliminar($datos)
{
unlink($s__temp_archivo);
unsset($s__temp_archivo);
$datos['foto'] = null;
$datos['foto_vista_preliminar'] = null;
$this->get_relacion()->tabla('docentes')->set($datos);
}
Te agradecería (apelando a tu máxima paciencia), una ayuda en este último item…
MIL GRACIAS, y de nuevo, mil perdones