Último archivo subido

v3sTi4

Hola buenas.
Miren hace unos días hice un script para subir archivos.
Y me funciona bien, se suben con éxito y todo eso.
Así que viendo el "éxito" de como quedó me puse a pensar y ver como podría hacer para visualizar los archivos subidos en la web. Así que se me ocurrió utlizar el bucle while y establecer la condición if para borrar los puntos que aparecen si utilizo opendirec.

Quedó algo como esto:

$filehandle = opendir($ruta); // Abrir archivos
while ($file = readdir($filehandle)) {
if ($file != "." && $file != "..") {
$tamanyo = GetImageSize($ruta . $file);
echo "<p><br></p>\n";
}
}
closedir($filehandle); // Fin lectura archivos

Pero claro, yo con esto no me he conformado y ahora no quiero que se me lean TODOS LOS ARCHIVOS, sino que sólo se me lea el último archivo subido.
Para eso he pesnado utilizar filectime(); que me muestra la fecha de creación del archivo y lo que quiero hacer es es suprimir el while y establecer en la condición if una nueva condición más filectime($archivo") que tenga que ser el último subido. y eso no se formularlo.

Quedarí algo así:
$filehandle = opendir($ruta); // Abrir archivos
$file = readdir($filehandle);
if ($file != "." && $file != ".." && filectime($file) == ES EL ÚLTIMO) {
$tamanyo = GetImageSize($ruta . $file);
echo "<p><br></p>\n";
}

He mirado las funciones php relativas a archivos y no veo la adeacuada:
http://es.php.net/manual/es/ref.filesystem.php

elhamo

Haz un while que recorra todos los archivos y te mire el timestamp.

Guárdate el de mayor timestamp (con 'ifes' y esas cosas).

Imprime el nombre de éste.

Si quieres más detalles, pulsa en http://www.media-vida.net/postear.php?fid=9&tid=303794 y deja tu mensaje :P.

v3sTi4

No te he comprendido, a ifes te refieres a condicones if, elseif no?

Si es eso, es exactamente lo que yo he plantado pero que no se establecer la condición de último archivo. Si yo supiera el timestmap como se coge "el más nuevo".

Salu2 y gracias

elhamo

$time_mayor = -1;
$ultimo_file = "";

while(..){
if(filectime($file) > $time_mayor){
$time_mayor = filectime($file);
$ultimo_file = $file;
}
}

echo "{$ultimo_file}";

¿Sencillo no? Si quieres más detalles pregunta.

v3sTi4

#4

Pero si no me equivoco no hace falta utilizar el bucle while porque como solo va a ser un archivo basta con el if.

Una duda:
$ultimo_file = "";
¿Esto lo dejo así o pongo ahí algo?

elhamo

#5 Básicamente necesitas hacer un while para recorrer todos los archivos.

y sí puedes dejar como "" la variable porque es la inicialización.

Un saludo

Usuarios habituales

  • elhamo
  • v3sTi4