doswy02440
2019-02-14 09:46
浏览 488
已采纳

如何从ftp服务器获取文件并在自己的服务器上复制

I want to get file from client server and copy them on my server , I have successfully connected to client server, my code is below.

// connect and login to FTP server
$ftp_server = "xx.xxx.xxx.xxx";
$ftp_username = 'xxxxxxxxxxxxxxx';
$ftp_userpass = 'xxxxxxxxxxxxxxxx';
 $ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
echo "<pre>";
 print_r($login);
  echo "</pre>";
 // get the file list for /
 $filelist = ftp_rawlist($ftp_conn, "/");

// close connection
ftp_close($ftp_conn);
echo "<pre>";
print_r($filelist);
echo "</pre>";
// output $filelist
var_dump($filelist);

May anyone please advise how can I achieve this?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • duanliaoyin3171 2019-02-16 06:56
    已采纳

    This is how I resolved this now all files will copy on your server. use ftp_ssl_connect if its secure

    $ftp_server = "xx.xxx.xxx.xxx";
    $ftp_username = 'xxxxxxxxxxxxxx';
    $ftp_userpass = 'xxxxxxxxxxxxxxxxxxx';
    
    $ftp_conn = ftp_ssl_connect($ftp_server) or die("Could not connect to $ftp_server");
    $login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
    
    ftp_pasv($ftp_conn,pasv);
    
    
    $output_directory="files1/ftpgetfiles/137/";
    // get the file list for /
    $filelist = ftp_nlist($ftp_conn, "/");
    
    foreach ($filelist as $key => $value) {
    $fp = fopen($output_directory.$value,"w");
    if(ftp_fget($ftp_conn, $fp, $value, FTP_BINARY))
    {
        fclose($fp);
    }
    }
    
    ftp_close($ftp_conn);
    
    点赞 评论
  • duanpo7354 2019-02-14 15:57

    You can use the ftp_fget function specified here: http://php.net/manual/en/function.ftp-fget.php

    (ftp_fget() retrieves remote_file from the FTP server, and writes it to the given file pointer.)

    Here an example provided by the documentation:

    <?php
    
    // path to remote file
    $remote_file = 'somefile.txt';
    $local_file = 'localfile.txt';
    
    // open some file to write to
    $handle = fopen($local_file, 'w');
    
    // set up basic connection
    $conn_id = ftp_connect($ftp_server);
    
    // login with username and password
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
    
    // try to download $remote_file and save it to $handle
    if (ftp_fget($conn_id, $handle, $remote_file, FTP_ASCII, 0)) {
     echo "successfully written to $local_file
    ";
    } else {
     echo "There was a problem while downloading $remote_file to $local_file
    ";
    }
    
    // close the connection and the file handler
    ftp_close($conn_id);
    fclose($handle);
    ?>
    
    点赞 评论

相关推荐 更多相似问题