이 기능은 업,다운로드 중 다른 작업을 가능하게 해주는 진보된 기능입니다. 사용 방법은 이전 함수와 크게 다르지 않으니 어렵지 않습니다.

다음은 B 호스트에서 로컬로 다운로드합니다.

예재(ex #1

  <?php 
 
// ftp는 상대경로, 절대경로가 허용되지 않으며,
 // 보통 public_html, www, html 로 시작합니다.
 // public_html/userid 에서 자료를 가져 온다면,
 // ftp 경로는 "public_html/userid/파일" 이 됩니다.

 // B 호스트 정보
 
$ftp_server "호스트 혹은 ip주소"

 
$ftp_user_name "접속 아이디"

 
$ftp_user_pass "접속 패스워드"


 
// B 호스트 접속
 
$conn_id ftp_connect($ftp_server
); 

 
// B 호스트 로그인 
 
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass
); 

 
// 원격으로 B 호스트에서 다운로드합니다.
 // 로컬에 저장할 파일명, 필요시 경로도 같이 작성해 줍니다. 
 
$file 'test_body.php'

 
$fp fopen($file'w'
); 

 
// 원격으로 public_html/userid/test.php 파일을 가져옵니다.
 
$ret ftp_nb_fget($conn_id$fp'public_html/userid/test.php'FTP_BINARY
); 
 
$i 1
;
 while (
$ret == FTP_MOREDATA
) { 

   
// 다운로드중 다른 작업을 작성합니다.
   
echo "${i} \n"
;
   
$i
++;
   
$ret ftp_nb_continue($conn_id
); 
 } 
 if (
$ret != FTP_FINISHED
) { 
      echo 
"다운로드 중 에러가 발생하였습니다."

      exit(
1
); 
 } 
 

 
ftp_close($conn_id
); 
 
fclose($fp
); 
 
?>


다음은 로컬파일을 B 호스트로 업로드합니다.

예제(ex #2

  <?php 
 
// ftp는 상대경로, 절대경로가 허용되지 않으며,
 // 보통 public_html, www, html 로 시작합니다.
 // public_html/userid 에 자료를 저장한다면,
 // ftp 경로는 "public_html/userid/파일" 이 됩니다.

 // B 호스트 정보
 
$ftp_server "호스트 혹은 ip주소"

 
$ftp_user_name "접속 아이디"

 
$ftp_user_pass "접속 패스워드"


 
// B 호스트 접속
 
$conn_id ftp_connect($ftp_server
); 

 
// B 호스트 로그인 
 
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass
); 

 
// 원격으로 전송할 파일
 // 필요시 사용자 업로드 파일을 B 호스트로 전송시
 // $_FILES['userfile']['tmp_name'] 으로 작성하면 됩니다.
 
$file 'test.php'

 
$fp fopen($file'r'
); 

 
// 원격으로 public_html/userid/test.php 파일 이름으로 저장합니다.
 
$ret ftp_nb_fput($conn_id'public_html/userid/test.php'$fpFTP_BINARY
); 
 
$i 1
;
 while (
$ret == FTP_MOREDATA
) { 

   
// 업로드중 다른 작업을 작성합니다.
   
echo "${i} \n"
;
   
$i
++;
   
$ret ftp_nb_continue($conn_id
); 
 } 
 if (
$ret != FTP_FINISHED
) { 
      echo 
"업로드중 에러가 발생하였습니다."

      exit(
1
); 
 } 

 
ftp_close($conn_id
); 
 
fclose($fp
); 
 
?>


다음은 원격 업로드 이어전송하기 및 프로그레스 입니다.

예제(ex #3

  <?php
 ob_end_flush
();
 
$remote_file 'remote.txt'
;
 
$local_file 'local.txt'
;

 
$fp fopen($local_file'r'
);

 
$conn_id ftp_connect($ftp_server
);
 
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass
);

 
$ret ftp_nb_fput($conn_id$remote_file$fpFTP_BINARY
);
 while (
$ret == FTP_MOREDATA
) {
     
// 업로드 중 리소스 소멸시 재연결합니다.
     
if(!isset($conn_id2
)) {
         
$conn_id2 ftp_connect($ftp_server
);
         
$login_result2 ftp_login($conn_id2$ftp_user_name$ftp_user_pass
);
      }
        
      
// 전송된 파일 크기를 측정합니다.
      
if(isset($conn_id2
)) {
          
clearstatcache
();
          
$remote_file_size ftp_size($conn_id2$remote_file
);
      }

      
// 프로그레스
      
$local_file_size  filesize($local_file
);
      if (isset(
$remote_file_size) && $remote_file_size 
){
          
$i = ($remote_file_size/$local_file_size)*100
;
          
printf("%d%% uploaded<br />\n"$i
);
          
flush
();
      }  
       
$ret ftp_nb_continue($conn_id
);
 }

 if (
$ret != FTP_FINISHED
) {
     print(
"There was an error uploading the file...<br />\n"
);
     exit(
1
);
 }
 else {
     print(
"ok!<br />\n"
);
 }

 
ftp_close($conn_id
); 

 
fclose($fp
);
 
?> 


◀ PREV : [1] : [2] : [3] : [4] : [5] : [6] : [7] : [8] : NEXT ▶