2010-06-10 50 views
6

Problema: Quiero determinar la hora de creación del archivo original desde un archivo cargado en mi servidor a través de PHP.PHP: ¿Cómo obtener la fecha de creación del archivo cargado?

Según tengo entendido, el archivo se copia del cliente a un archivo temporal en mi servidor, que luego se referencia en la varilla $ _FILES. El archivo temporal por supuesto no sirve porque fue creado. ¿Hay alguna forma de que pueda obtener la fecha de creación del archivo original del cliente?

Gracias

+0

Puede probar filemtime [http://php.net/manual/en/function.filemtime.php](http://php.net/manual/en/function.filemtime.php) – Karlisson

Respuesta

10

que los datos no son enviados por el navegador, así que no hay manera de acceder a él. Los datos enviados junto con el archivo son mime-type, filename y el contenido del archivo.

Si desea la fecha de creación, necesitará que el usuario la proporcione o cree un mecanismo de carga de archivos especial a través de Flash o Java.

+0

Gracias asignar! En una nota al margen: ¿es una práctica común poner la fecha de creación dentro del contenido del archivo? El archivo es .w3g (un archivo de reproducción asociado a Warcraft 3). Si hay alguna posibilidad de que el creador del archivo ponga la fecha de creación dentro del archivo, dedicaré un poco de tiempo para diseccionarlo más. Me pregunto si hay alguna forma de "práctica común", para darme una pista de si la fecha está allí o no. –

3

No, la secuencia de datos se escribe en un archivo en el directorio tmp en lugar de que el archivo sea simple 'copiado' a su servidor web, técnicamente es un 'nuevo' archivo.

+0

No entiendo la diferencia entre la transmisión y la transmisión. ¿No estás en ambos casos simplemente transfiriendo bytes de un lugar a otro? ¿O hay una diferencia en los metadatos que se transfieren? –

+0

Bueno, fue más para ayudarlo a 'ver' el proceso que tenga sentido. El punto es que los datos creados/modificados se guardan en el sistema de archivos, no en el contenido real del archivo. Entonces, cuando el navegador envía el archivo, simplemente envía el contenido real del archivo y no proporciona más información. Flash es realmente la mejor opción si lo necesita, ya que la clase FileReference le da acceso (lado del cliente) a los datos que puede enviar manualmente con la carga. –

+0

Sí, todo está muy claro ahora. Muchas gracias. –

0

Dependiendo del tipo de archivo, podría ser posible: por ejemplo, MS Office, Open Office, PDF y muchos otros tipos tienen un valor de "fecha de creación" dentro de las propiedades del archivo .... aunque tendría necesita abrir el archivo y leer la información relevante ... y variará de tipo de archivo a tipo de archivo

0

Puede ensartar una fecha formateada amigable a los nombres de sus archivos durante la creación y recuperarlos en consecuencia.

1

Además de las respuestas inmediatas o la confianza en la información incrustada, vale la pena señalar que la respuesta general ideal es que los navegadores/UA implementan POST multipart/form-data usando lo que está disponible en RFC2183.

Pueden utilizar los parámetros adicionales del encabezado Content-Disposition para agregar metadatos adicionales como fechas de creación y modificación.

No sé si algún navegador lo hace en este momento. Pero la especificación técnica está allí y, por lo que puedo ver, es compatible con RFC2388.

Cuestiones relacionadas