ftp_get()损坏大文件下载

时间:2015-05-25 21:17:31

标签: php ftp wamp lamp gz

我必须使用ftp从服务器下载.gz格式的大文件(约〜-9mb)。我已经编写了一个完全正确地下载文件的函数但是当我把这个代码放到网上时,文件被下载但是文件被破坏了。 这是我的代码:

function downloadFile($ftp_server, $username, $password, $server_file, $local_file)
{

// download server file
    $ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
    $login = ftp_login($ftp_conn, $username, $password);
    ftp_pasv($ftp_conn, true);
    if (ftp_get($ftp_conn, $local_file, $server_file, FTP_ASCII)) {
        echo "Successfully written to $local_file.";
        //   exit;

    } else {
        echo "Error downloading $server_file.";
    }

}

以下是我如何称呼它

ini_set('max_execution_time', 0);
$username = "username";
$password = "password";
$xmlFile = __DIR__ . "/monster.xml.gz";
$local_file = __DIR__ . "/monster.xml";
$ftp_server = "ftp.monster.com";
$server_file = "/US~Partner~Sample Feed.xml.gz";


downloadFile($ftp_server,$username,$password,$server_file,$xmlFile);

必须下载该文件,然后我将其转换为XML以供进一步处理。 注意:该文件在localhost上下载完美,当我们将它放在实时服务器上时会出现此问题。

1 个答案:

答案 0 :(得分:0)

GZ文件不仅可能包含文字。因此,您必须使用二进制模式下载它,以便包含其中的任何内容都可以成功下载

if (ftp_get($ftp_conn, $local_file, $server_file, FTP_ASCII)) {
    echo "Successfully written to $local_file.";
    //   exit;

} else {
    echo "Error downloading $server_file.";
}