Kendimi bu sorun için bir çözüm ararken ben, bu sayfada geldi. Ben bir şey buldum, ben kendim kadar şey yaptı.
Güzel çözüm olabilir, ama bu benim için çalıştı değil:
Bu 512000 bayt parçalarını içinde uzak dosyayı indirir. Tüm parçalarını indirilen zaman, yerel dosyayı koyar ve parçaları kaldırır. Her zaman yerel dosyayı (aslında kendisine parçalarını yazmaya başlamadan önce yerel dosyayı siler) üzerine yazar.
Ben bu kimse yardımcı olur umarım.
Ben temiz ben uzaktan dosya boyutunu belirlemek için de kıvırın kullanabilirsiniz yapmaya istekli olsaydı sanırım. Ama 'kanal bant-programcı' daha fazla duyuyorum. Bu şekilde çalışır ve bu :-) benim için bütün mesele bu
$server = '...'; //for example ftp.testftp.nl
$full_remoteURI = '...'; // for example ftp://ftp.testftp.nl/exports/dump.xml
$username = '...';
$passwrd = '...';
$remote_ftp_path = '...'; // for exmple /exports
$remote_filename = '...';
$local_filename = '...';
$ftpconnect = ftp_connect($server);
if($ftpconnect) $login = ftp_login($ftpconnect, $username, $passwrd);
else print "<p>FTP verbinding mislukt.</p>\n";
if($login) {
ftp_chdir($ftpconnect, $remote_ftp_path);
$fsize = ftp_size($ftpconnect, $remote_filename);
if(isset($_GET['f'])) $f = $_GET['f'];
else $f = 0;
if($f > 0) $start = ($f * 512001);
else $start = 0;
if($start < $fsize) {
$curl = curl_init();
$file = fopen($local_filename . $f, 'w');
curl_setopt($curl, CURLOPT_URL, $full_remoteURI); #input
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FILE, $file); #output
curl_setopt($curl, CURLOPT_RANGE, $start . "-" . ($start + 512000));
curl_setopt($curl, CURLOPT_USERPWD, $username . ":" . $passwrd);
curl_exec($curl);
$voltooid = number_format(100 * $start / $fsize, 0, '','');
print "<p>XML bestanden downloaden $voltooid %.</p>
<script type=\"text/javascript\">
<!--
document.onload = top.location = 'sync.php?f=" . ($f + 1) . "';
-->
</script>\n";
}
else {
$del = unlink($local_filename);
if(!$del) print "<p>Oude bestand verwijderen mislukt!</p>\n";
$fh = fopen($local_filename, 'w');
for($i = 0; $i < $f; $i++) {
$data = file_get_contents($local_filename . $i);
fwrite($fh, $data);
unlink($local_filename . $i);
}
fclose($fh);
print "<p>Downloaden voltooid.</p>\n";
}
}
else print "<p>Login failed</p>\n";