qchar
9.01.2010, 14:02:44
Mam katalog do którego użytkownicy mogą uploadować zdjęcia. I pytanie brzmi, czy da się sprawdzić które z plików są już kompletne, a które właśnie ktoś uploaduje?
darko
9.01.2010, 14:04:30
Cytat
I pytanie brzmi, czy da się sprawdzić które z plików są już kompletne, a które właśnie ktoś uploaduje?
Zależy, w jaki sposób mogą wysyłać.
Cytat
spróbuj is_readable i/lub is_writable
Podczas wysyłania pliki nie zawsze muszą być blokowane. To zależy od przypadku.
darko
9.01.2010, 14:16:04
Cytat(erix @ 9.01.2010, 14:13:52 )

Podczas wysyłania pliki nie zawsze muszą być blokowane. To zależy od przypadku.
W takim razie dołączam się do pytania, nieco je zmieniając: jak sprawdzić czy plik jest partialem czy kompletnym przesłanym plikiem, w przypadku, kiedy nie są blokowane podczas wysyłania?
// editMarna metoda, ale powinno działać:
//ob_implicit_flush(true);
// przesłany
}
qchar
9.01.2010, 14:50:33
w moim przypadku pliki będą wysyłane przez ftp. a co do is_writable i is_readable (pod windowsem przynajmniej) nie działa, za chwilę jeszcze sprawdzę jak to działa pod linuxem...
na hostingu też nie działa. a co do tego rozwiązania z czekaniem mam trochę wątpliwości: po pierwsze jak to wydajnościowo będzie działało. w przypadku dużej ilości plików, powiedzmy 1000, już trzeba by to sprawdzanie rozbić na 2 pętle zeby nie czekać prawie godziny i wyniki gromadzić w jakiejś tablicy, potem poczekać i do drugiej tablicy wpisać wszystko od nowa i porównać. no ale teraz zakładając że każde zdjęcie ma 1-2 MB i że większość z nich jest kompletna, to dostajemy 2 ogromne tablice i może braknąć pamięci.
więc do póki nie znajdzie się jakieś lepsze rozwiazanie będę chyba po prostu sprawdzał rozszerzenie(lub nazwę) pliku, bo akurat na moim hostingu uploadowany plik z tego co zauważłem ma całkowicie losową nazwę bez rozszerzenia.
darko
9.01.2010, 15:05:01
Zdecydowanie lepiej byłoby zamiast file_get_contents dać filesize i porównywać tylko rozmiar, a nie długość stringa z wyciągniętą zawartością.
Z tego co piszesz, to najlepiej byłoby sprawdzać rozszerzenie za pomocą pathinfo i sprawdzać za pomocą in_array ze zdefiniowaną tablicą rozszerzeń obrazkowych i jeśli brak rozszerzenia obrazkowego (jpg, png itd.) to plik się jeszcze wysyła. Tylko nie wiem czy pathinfo działa via ftp ? Można też po prostu sprawdzić czy w nazwie pliku występuje kropka, a wyciągnąć rozszerzenie można alternatywnie bawiąc się
$ext = substr($filename, strrpos($filename, '.') + 1);
lub
$ext = preg_replace('/^.*\.([^.]+)$/D', '$1', $filename);
Cytat
jak sprawdzić czy plik jest partialem czy kompletnym przesłanym plikiem, w przypadku, kiedy nie są blokowane podczas wysyłania?
Trzeba po prostu znać rozmiar pliku i go okresowo sprawdzać.
Z tego, co pamiętam, to via FTP rozmiar pliku nie jest alokowany z góry, tylko cały czas dopisywany, więc może to stanowić pewien problem.
qchar
9.01.2010, 15:13:44
nie no, właśnie dzięki temu że nie jest alokowany może mieć to ręce i nogi, bo właśnie wtedy mogę porównywać sam file_size, a nie file_contents tak jak proponował darko na początku. a nie jestem w stanie wiedzieć co kto przyśle i jakie to będzie duże. ale rozwiązanie ze sprawdzaniem rozszerzenia śmiga całkiem dobrze.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.