2010-06-10 17 views
6

Problem: Chcę ustalić oryginalny czas utworzenia pliku z pliku przesłanego na mój serwer za pośrednictwem PHP.PHP: Jak uzyskać datę utworzenia z przesłanego pliku?

Rozumiem, że plik jest kopiowany z klienta do pliku tymczasowego na moim serwerze, który następnie jest przywoływany w zmiennej $ _FILES. Plik tymczasowy jest oczywiście bezużyteczny, ponieważ został właśnie utworzony. Czy istnieje sposób, aby uzyskać datę utworzenia z oryginalnego pliku klienta?

Dzięki

+0

Możesz wypróbować filemtime [http://php.net/manual/en/function.filemtime.php](http://php.net/manual/en/function.filemtime.php) – Karlisson

Odpowiedz

10

że dane nie są wysyłane przez przeglądarkę, więc nie ma sposobu, aby go otworzyć. Dane wysyłane wraz z plikiem to mime-type, filename i zawartość pliku.

Jeśli chcesz utworzyć datę, musisz albo podać ją, albo utworzyć specjalny mechanizm przesyłania plików przez Flash lub Java.

+0

Dzięki za dużo! Na marginesie: czy powszechną praktyką jest umieszczanie daty utworzenia w treści pliku? Plik to .w3g (plik powtórki związany z Warcraft 3). Jeśli jest jakakolwiek szansa, że ​​twórca pliku umieści datę utworzenia w pliku, poświęcę trochę czasu na dalsze jej przeanalizowanie. Zastanawiam się, czy istnieje jakaś "powszechna praktyka", aby dać mi wskazówkę, czy data jest tam, czy nie. –

3

Nie, strumień danych jest zapisywany do pliku w katalogu tmp zamiast do pliku, który jest "kopiowany" na serwer WWW, do jego "nowego" pliku.

+0

Nie rozumiem różnicy między przesyłaniem strumieniowym a kopiowaniem. Czy w obu przypadkach po prostu nie przesyłasz bajtów z jednego miejsca do drugiego? Czy istnieje różnica w przenoszonych danych meta? –

+0

Cóż, to było raczej pomóc "zobaczyć" proces, który ma sens. Chodzi o to, że utworzone/zmodyfikowane dane są zapisywane w systemie plików, a nie rzeczywista zawartość pliku. Tak więc, gdy przeglądarka wysyła plik, po prostu wysyła rzeczywistą zawartość pliku i nie ma dalszych informacji. Flash jest naprawdę najlepszą opcją, jeśli jest to potrzebne, ponieważ klasa FileReference zapewnia dostęp (po stronie klienta) do danych, które można ręcznie przesłać wraz z przesyłaniem. –

+0

Tak, teraz wszystko jest bardzo jasne. Dziękuję Ci bardzo. –

0

W zależności od typu pliku może być to możliwe: na przykład MS Office, Open Office, PDF i wiele innych typów posiada wartość "utworzonej daty" we właściwościach pliku .... chociaż musisz otworzyć plik i przeczytać odpowiednie informacje .... i będzie się on różnić od typu pliku do typu pliku

0

Możesz napisać przyjazną sformatowaną datę do swoich nazw plików podczas ich tworzenia i pobrać je odpowiednio.

1

Oprócz odpowiedzi na temat obejścia lub polegania na osadzonych informacjach, warto zauważyć, że idealizowaną ogólną odpowiedzią jest to, że jeśli przeglądarki/UA wprowadzają POST wielostronicowy/formularz danych, wykorzystując to, co jest dostępne w RFC2183.

Mogą wykorzystywać dodatkowe parametry nagłówka Content-Disposition, aby dodać dodatkowe metadane, takie jak daty utworzenia i modyfikacji.

Nie wiem, czy w danej chwili działają przeglądarki. Ale specyfikacja techniczna istnieje i o ile widzę, jest kompatybilna z RFC2388.

Powiązane problemy