Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][ftp] Plik czy katalog?
Forum PHP.pl > Forum > Przedszkole
wNogachSpisz
Witam, jak w php rozpoznac czy pracujemy na zewnetrznym serwerze z plikiem i katalogiem?

napisalem szybciutko mala fukcje parsujaca to co zwraca ftp_rawlist

  1. <?php
  2.   function raw_files_list($path='.') {
  3.   
  4.      if ( ! $this->_is_conn())
  5.          return false;
  6.   
  7.      if ( ! $list = @ftp_rawlist($this->conn_id, $path)) {
  8.          if ( true == $this->debug)
  9.              $this->_error('ftp_unable_to_retrive_rawlist');
  10.          return false;
  11.      }
  12.   
  13.      $dirs = array();
  14.      $files = array();
  15.   
  16.      /* the first two records are '..' and '.' */
  17.      $_count = count($list) - 2;
  18.      for ( $i=2; $i<$_count; $i++ ) {
  19.          if ( ! preg_match('# ([0-9]{1,99}) [a-zA-Z]{3,3} [0123]{1,1}[0-9]{1,1} [012]{1,1}[0-9]{1,1}:[0-9]{2,2} (.*?)$#', $list[$i], $out)) {
  20.              error('blad funkcj parsujacej');
  21.          }
  22.       
  23.          if ( $out[1] == '4096' ) {
  24.              /* for 99,99% it is a dir.. */
  25.              $dirs[] = $out[2];
  26.          }
  27.          else {
  28.              $files[] = $out[2];
  29.          }
  30.      }
  31.      return array( $dirs, $files );
  32.   }
  33. ?>


Niestety bazuje ona na tym, ze serwer twierdzi iż wielość katalogu to zawsze 4096, tak wiec plik o wielkosci rownej 4096 zostanie przez moja funcje rozpoznany jako katalog... rówież wyrazenie regularne nie jest doskonale i przy odpowiedniej nazwie pliku wywali sie, na szczecie prawdopodobienstwo wystapienia takiej nazwy w przyrodzie jest bliskie 0 smile.gif

czy da sie to zrobic lepiej?
kajzur
Hm.. Nie wiem czy dobrze zrozumiałem, ale może funkcje
is_file() - http://pl2.php.net/manual/pl/function.is-file.php

i

is_dir() - http://pl2.php.net/manual/pl/function.is-dir.php

Będą pomocne smile.gif
wNogachSpisz
zakladamy ze nie mam dostepu do php na serwerze gdzie sprawdzam pliki, zakladamy ze w ogole tamtejszy serwer nie obsluguje php ;p

oczywiscie jest to jakis sposob, mam nadzieje ze nie jedyny.

jednak mi chodzi o to jak tego dokonac za posednictwem protokolu FTP jedym zapytaniem.
erix
Cytat
Niestety bazuje ona na tym, ze serwer twierdzi iż wielość katalogu to zawsze 4096, tak wiec plik o wielkosci rownej 4096

Sposób mało przenośny, zależy od systemu plików serwera.

ftp_rawlist" title="Zobacz w manualu PHP" target="_manual i jeśli pierwszy znak we wpisie, to "d" - wpis, to katalog.
wNogachSpisz
W rzeczy samej, brak doswiadczenia z nixami sie klania, dzieki ;p

prawie bym zapomnial kliknac pomogl ;p
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.