FTP copy a file to another place in same FTP

前端 未结 9 2081
闹比i
闹比i 2020-11-28 11:54

I need to upload same file to 2 different place in same FTP. Is there a way to copy the file on the FTP to the other place instead of upload it again? Thanks.

9条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-11-28 12:27

    The code below makes the FTP server to upload the file to itself (using loopback connection). It needs the FTP server to allow both passive and active connection mode.

    If you want to understand the ftp commands here is a list of them : List of ftp commands

    function copyFile($filePath, $newFilePath)
    {
        $ftp1 = ftp_connect('192.168.1.1');
        $ftp2 = ftp_connect('192.168.1.1');
        ftp_raw($ftp1, "USER ftpUsername");
        ftp_raw($ftp1, "PASS mypassword");
        ftp_raw($ftp2, "USER ftpUsername");
        ftp_raw($ftp2, "PASS mypassword");
    
        $res = ftp_raw($ftp2, "PASV");
        $addressAndPort = substr($res[0], strpos($res[0], '(') + 1);
        $addressAndPort = substr($addressAndPort, 0, strpos($addressAndPort, ')'));
    
        ftp_raw($ftp1, "CWD ." . dirname($newFilePath));
        ftp_raw($ftp2, "CWD ." . dirname($filePath));
        ftp_raw($ftp1, "PORT ".$addressAndPort);
    
        ftp_raw($ftp1, "STOR " . basename($newFilePath));
        ftp_raw($ftp2, "RETR " . basename($filePath));
    
        ftp_raw($ftp1, "QUIT");
        ftp_raw($ftp2, "QUIT");
    }
    

提交回复
热议问题