PHP的ftp操作

1. 連接ftp服務器

false|handle ftp_connect(string $host, int $port);

該函數接收ftp服務器主機名與端口號,端口號可選,返回一個ftp句柄,連接失敗返回false

2. 登陸ftp服務器

bool ftp_login(ftp_handle $conn, $user, $pwd);

該函數需要一個ftp的連接句柄,用戶名與密碼,登陸成功返回true,失敗返回false

3. 獲取ftp服務器文件的修改時間

timestamp ftp_mdtm(ftp_handle $conn, $remote_file);

4. 從ftp下載文件

ftp_fget($conn, $local_file_handle, $remote_file, FTP_MODEL);

參數介紹:
1. connftpftpconnect2. local_file_handle:本地文件句柄,用於存放從ftp下載下來到文件流
3. $remote:ftp上要下載的文件到路徑
4. FTP_MODEL:ftp模式,ASCII模式(FTP_ASCII)、二進制模式(FTP_BINARY)

ASCII模式:用於傳輸文本文件(文件全由ASCII字符組成)

二進制模式:用於傳輸其他類型的文件

ftp_get($conn, $local_file, $remote_file, FTP_MODEL);

該函數與ftp_fget()函數功能相同,但是不需要傳遞本地文件到句柄,只需要傳遞本地文件到路徑即可

5. 上傳文件

ftp_fput($conn, $remote_file, $local_file_handle, FTP_MODEL);
ftp_put($conn, $remote_file, $local_file, FTP_MODEL);

6. 關閉連接

ftp_quit($conn);

7. 實例

//定義連接與文件路徑等信息
$host = 'ftp.xxx.com';
$user = 'user1';
$password = 'password';
$remote_file = '/logo/1.png';
$local_file = '/Users/xxx/xxx/1.png';

//連接ftp服務器
$conn = ftp_connect($host);
if(!$conn){
    echo 'Error: Could not connect to ftp server<br>';
    exit;
}
echo "Connected to $host";

//登陸ftp服務器
$result = @ftp_login($conn, $user, $password);
if(!$result){
    echo "Error: Could not log on as $user<br>";
    ftp_quit($conn);
    exit;
}
echo "Logged in as $user<br>";

//驗證本地文件
echo 'Check file time...<br>';
//判斷本地文件是否存在,如果存在,則判斷其與ftp服務器上的文件哪個更新
if(file_exists($local_file)){
    $local_time = filemtime($local_file);
    echo 'Local file last updated ';
    echo date('Y-m-d H:i:s',$local_time).'<br>';
}else{
    $local_time = 0;
}

//獲取ftp服務器上文件的最後修改時間,與本地文件的最後修改時間進行對比
$remote_time = ftp_mdtm($conn, $remote_file);
if(!($remote_time >= 0)){
    echo 'Can\'t access remote file time.<br>';
    $remote_time = $local_time + 1;
}else{
    echo 'Remote file last updated ';
    echo date('Y-m-d H:i:s',$remote_time).'<br>';
}

if(!($remote_time > $local_time)){
    echo 'Local copy is up to date.<br>';
    exit;
}

//從ftp服務器下載文件
echo 'Getting file from server...<br>';
$fp = fopen($local_file, 'w');
if(!$success = ftp_fget($conn, $fp, $remote_file, FTP_BINARY)){
    echo 'Error: Could not download file';
    ftp_quit($conn);
    exit;
}

//關閉連接
fclose($fp);
echo 'File downloaded successfully';
ftp_quit($conn);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章