ftp_get () повреждена загрузка большого файла

1

Мне нужно загрузить большой файл (приблизительно ~ -9mb) в формате.gz с сервера с помощью ftp. Я написал функцию, которая загружает файл полностью и правильно, но когда я помещаю этот код онлайн, файл загружается, но файл повреждается. Вот мой код:

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 для дальнейшей обработки. Примечание. Файл загружается идеально на локальном хосте, эта проблема возникает, когда мы помещаем ее на живой сервер.

  • 0
    Зачем вам скачивать сжатый файл в режиме ASCII?
  • 0
    Я использовал его, потому что он содержит только текст. Пожалуйста, сообщите мне погоду, я должен скачать его в каком режиме.
Показать ещё 1 комментарий
Теги:
ftp
wamp
lamp
gz

1 ответ

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.";
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню