2010-03-03 9 views
1

PHP를 사용하여 FTP 서버의 모든 파일을 나열하려고합니다. RFC 959에 따르면 FTP 명령 LIST은 사람이 읽을 수있는 임의의 정보를 파일/폴더에 인쇄 할 수 있으므로 파일 형식을 올바르게 판별 할 수없는 것으로 보입니다. 그러나 다른 FTP 클라이언트가 파일과 폴더를 구별하기 위해 어떻게 관리합니까? 씌어지지 않은 표준이 있습니까?FTP 서버의 파일과 폴더를 구별하는 방법

답변

0

마침내 원하는 동작을 구현하는 FTP 프로토콜의 확장이 발견되었습니다. 명령은 MLSD라고하며 page 23 of RFC 3659에서 찾을 수 있습니다. 기본값으로 사용하고 의 출력을 마치 ls -l에 의해 반환 된 것처럼 구문 분석하려고합니다.

1

많은 생각이 ftp 서버에 달려 있습니다. prgrm1.c 파일 인 반면,

drwxr-xr-x 2 5609  1510   1896 Oct 31 2007 practice 
-rw-r--r-- 1 5609  1510   646 Feb 08 2009 prgrm1.c 

명확하게 연습을하는 디렉토리입니다 것을 보여줍니다는 FTP 서버는 주위에 내 대학에서 다음과 같은 형식의 출력에 "LS"명령을 제공합니다.

1

ftp_rawlist()을 사용할 수 있습니다. (가) "D"로 시작하는 항목을 얻을 예를 들어

$ftp_server="someserver"; 
$ftp_user_name="someuser"; 
$ftp_user_pass="somepassword"; 
$conn_id = ftp_connect($ftp_server); 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
if ((!$conn_id) || (!$login_result)) { 
    echo "FTP connection has failed!"; 
    echo "Attempted to connect to $ftp_server for user $ftp_user_name"; 
    exit; 
} else { 
    echo "Connected to $ftp_server, for user $ftp_user_name"; 
    $buff = ftp_rawlist($conn_id, '/'); 
    $dirs = preg_grep("/^d/",$buff); 
    print_r($dirs); 

} 
+0

보장 되나요? 폴더 인 경우 서버가't'를 첫 번째 문자로 자유롭게 인쇄 할 수 있습니까? 아니면 RFC에 언급되지 않은 채로이 '표준'이 수립 되었습니까? – soulmerge

+0

AFAIK this (UNIX ls -l의 출력)는 "사실상"표준입니다. – jpalecek

0

왜 파일/경로에 CD하지 (디렉토리 수단)? 오류가 발생하면 파일입니다.

+0

... 디렉토리가 아닌 경우 입력 권한이 없습니다. – jpalecek

+0

그러면 응답에 대한 자세한 검사가 순서대로 이루어집니다. – stillstanding

관련 문제