Nombre y extensión en ef_upload..

Buena tarde, el siguiente código tomado de toba referencia, me permite cargar y descargar archivos; pero al momento de la descarga muestra un valor encriptado(fa8787868ab989…) en hexadecimal, lo que deseamos es que muestre el nombre y la extensión (*.doc, *.xls, *.pdf…) de dicho archivo.

$fp_imagen = $this->get_relacion()->tabla(‘formatos’)->get_blob(‘fmd_archivo’);
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);
            $tamaño = round(filesize($temp_archivo['path']) / 1024);

            //-- Se muestra la imagen temporal
            $registro['vista_previa'] = "<a href='{$temp_archivo['url']}' >Abrir Archivo "."</a>";

            $registro['fmd_archivo'] = 'Tamaño: '.$tamaño. ' KB';
      } else {
          $registro['fmd_archivo'] = null;
      }

Mil gracias.

Hola,
el nombre depende de esta línea:

$temp_nombre = md5(uniqid(time()));

No lo probé pero estimo que puede servirte agregar una línea más del tipo:

$temp_nombre .= ‘.doc’;

Luego, en $temp_archivo, tenés el nombre incluído el path navegable (completo).

Si jugas con esas variables debés obtener lo que necesitás.

Espero te sirva!

Si es claro, pero como capturo el nombre original del archivo que sube el usuario ??

Porque se requiere almacenar el nombre y la extensión original

Gracias

Buenas…

Tengo una programación que utiliza un ef_upload, para la carga de archivos… pero el código que utilizo es un poco mas sencillo…


405      function evt__form_fotos__alta($datos)
406      {
407          $datos = $this->procesar_archivo($datos);
408          
409          $this->tabla('archivo')->nueva_fila($datos);
410          $this->tabla('archivo')->resetear_cursor();
411      }

432      function procesar_archivo($datos)
433      {
434          // guardo la dirección y nombre del archivo temporal donde se cargó
435          // la imagen.
436          $archivo = $datos['archivo']['tmp_name'];
437          
438          // formateo correctamente el campo archivo que se guarda en la base de
439          // datos
440          $datos['archivo'] = $datos['archivo']['name'];
441          
442          // determino el directorio donde dejar el archivo definitivo
443          $proyecto = toba::memoria()->get_dato_operacion('proyecto');
444          
445          $fecha = $this->tabla('visita')->get_columna('fecha');
446          
447          $dir_visita = visita::directorio($fecha, $proyecto);
448          
449          $dir_archivo = $dir_visita.'/'.$datos['archivo'];
450          
451          // copio el archivo temporal al directorio definitivo
452          move_uploaded_file($archivo, $dir_archivo);
453          
454          $datos = $this->limpiar_datos($datos, 'archivo');
455          
456          return $datos;
457      }

405 - este es el evento que se dispara cuando el usuario pulsa AGREGAR en el formulario, $datos contiene los datos que recogió el ef_upload.

436 - el ef_upload se llama ARCHIVO, por lo que $datos[‘archivo’][‘tmp_name’] es el path completo (incluido el nombre) donde fue a parar el archivo que están subiendo.

440 - $datos[‘archivo’][‘name’] es el nombre del archivo, sin el path. → creo que este es el dato que estás buscando.

Espero que te sea útil

Saludos.

José

Amigo, muchas gracias por interesarte

Lo voy a probar y te cuento; tienes a la mano la función de modificar ?

Gracias.

Ya se soluciona correctamente, la carga y descarga de los archivos.

El problema se reduce ahora, a que las imágenes, archivos pdf, se abren en una ventana nueva del navegador, sacandome de la aplicación, como obligo a que siempre muestre la ventana de dialogo de descarga ??

Gracias

Eso, si no me equivoco es una configuración del navegador (Si es firefox, creo que en Aplicaciones en las Herramientas, podés configurar esto). La primera vez que se abre te pregunta que hacer con cierto tipo de archivo… y de ahí en adelante puede hacerlo siempre de la misma forma.
Igual, si lo manejás con headers, podés ponerle algo como force-download.
En el manual que postee, hay un ejemplo de descarga de archivos que usa los headers para la descarga.

Me interesa lo último, porque es para los usuarios finales,

donde se encuentra el ejemplo de force-downloads ??

Gracias

Fijate si algo de lo que compendié acá te sirve.

http://comunidad.siu.edu.ar/index.php?topic=3324.0