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