[PHP]Sprawdzenie wielkości pliku


(felixik) #1

Witam, kombinuję już trochę i jakoś nie bardzo mam pomysł jak zrobić jedną rzecz. Mianowicie wczytuję plik z katalogu kodem poniżej:

echo'';

  $a = file_get_contents("".$dir.$_GET['strona'].".".$typ_pliku."");

  echo $a;

  echo '
';

  echo '';

  $editor_data = stripslashes($_POST['content']);

  $editor_data = str_replace($tab1, $tab2, $editor_data);

  $editor_data = html_entity_decode($editor_data);

  $b = file_put_contents("".$dir.$_GET['strona'].".".$typ_pliku."", $editor_data);

echo'';

i teraz jest moje pytanie. Powyższy kod pobiera całą zawartość pliku czyszcząc go i pozostawiając pustego. Jak sprawdzić czy otwarty w ten sposób plik ma wielkość 0 b. Próbowałem z filsezie(), ale otrzymywałem warning o treści: Warning: filesize() [function.filesize]: stat failed for a właśnie chodziłoby mi o to jak przy wartości 0 b poinformować użytkownika, że plik najprawdopodobniej jest edytowany


(Copycona) #2

filesize() rzuca taki warning, jeżeli błąd odczytu pliku - na myśl mi przychodzi brak uprawnień lub wykonanie funkcji na nieistniejącym pliku. To może najpierw sprawdzić, czy plik w ogóle istnieje? _file_exists()_, _is_readable()_. Chociaż prawdę mówiąc nie wiem jak podany fragment kodu ma powodować wspomniane ostrzeżenie.


(felixik) #3

Po 1 plik istnieje, bo wczytuję jego zawartość i widzę ją w edytorze

Po 2 plik jest readable, gdyż jest możliwa jego modyfikacja.

Wszystko działa jak należy oczywiście oprócz sprawdzania rozmiaru. Chyba, że ktoś z was ma inny sposób na to jak sprawdzić 'otwartość' pliku


(Grzesie K) #4

Możesz przecież również sprawdzić długość wczytanego ciągu (zwróconego przez file_get_contents). Poza tym użycie fopen...fclose i funkcji ,,pośrednich" byłoby bardziej wydajne.


(felixik) #5

strlen załatwia sprawę. Dziękuję serdecznie za radę