Jon van Dorsten
14/02/03, 15:55
Hallo,
Ik kwam tegen dat het mogelijk is om FTP ondersteuning in PHP te gebruiken
op onze webserver,
Dit wou ik gebruiken omdat het voor ons noodzakelijk is om te controleren of
een bestand (update) volledig gedownload is.
Mocht dit niet gaan werken dan zijn andere ideeën om te controleren of een
bestand volledig binnen is ook welkom.
Dus iemand ideeën over dit script of mischien een andere mogelijkheid
waarmee ik kan controleren of de gebruiker de download niet halverwege heeft
afgebroken?
Alles lukt via PHP alleen het downloaden van het bestand niet, ik heb het
volgende testscript geschreven:
Alvast bedankt.
<?php
$ftp_server = "***";
$ftp_user_name = "***";
$ftp_user_pass = "***";
// maak een basis connectie aan
$conn_id = ftp_connect($ftp_server);
// meldt je aan met een gebruikersnaam en wachtwoord
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// controleer de verbinding
if ((!$conn_id) || (!$login_result)) {
echo "FTP connectie is mislukt!";
echo "Probeerde naar <B>$ftp_server</B> te verbinden met de
gebruiker $ftp_user_name<BR><BR>";
exit;
} else {
echo "Verbonden met FTP server: <B>$ftp_server</B>, als gebruiker
$ftp_user_name<BR><BR>";
}
// navigeren naar de downloadmap
if (ftp_chdir ($conn_id, "/usr/local/WWW/www.snelstart.nl/ftp/WIN")) {
echo "Navigeren naar map WIN<P>";
} else {
echo "Niet gelukt om naar de map WIN te gaan<P>";
}
// laat de bestanden in de huidige map zien
echo "bestanden weergeven:<BR>";
foreach(ftp_nlist($conn_id, '') as $entry) {
echo $entry." ".ftp_size($conn_id,$entry)." bytes<BR>";
}
echo "<BR><B>Download bestand $entry</B><BR><BR>";
$source_file = $entry; // in dit geval is het laatste bestand het bestand
dat gedownload moet worden
$destination_file = "C:\JetSp3E.exe";
// time out verhogen zodat download volledig kan voltooien
if (ftp_set_option($conn_id, FTP_TIMEOUT_SEC, 300)) {
echo "Time out verhoogt naar 300 sec.<BR>";
} else {
echo "Time out kon niet verhoogt worden.<BR>";
}
//download het bestand
$download = ftp_get($conn_id, $destination_file, $source_file, FTP_BINARY);
// controleer de download status
if (!$download) {
echo "FTP download is mislukt!";
} else {
echo "Gedownload: $source_file naar $ftp_server als
$destination_file";
}
// sluit de FTP stream
ftp_close($conn_id);
?>
Ik kwam tegen dat het mogelijk is om FTP ondersteuning in PHP te gebruiken
op onze webserver,
Dit wou ik gebruiken omdat het voor ons noodzakelijk is om te controleren of
een bestand (update) volledig gedownload is.
Mocht dit niet gaan werken dan zijn andere ideeën om te controleren of een
bestand volledig binnen is ook welkom.
Dus iemand ideeën over dit script of mischien een andere mogelijkheid
waarmee ik kan controleren of de gebruiker de download niet halverwege heeft
afgebroken?
Alles lukt via PHP alleen het downloaden van het bestand niet, ik heb het
volgende testscript geschreven:
Alvast bedankt.
<?php
$ftp_server = "***";
$ftp_user_name = "***";
$ftp_user_pass = "***";
// maak een basis connectie aan
$conn_id = ftp_connect($ftp_server);
// meldt je aan met een gebruikersnaam en wachtwoord
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// controleer de verbinding
if ((!$conn_id) || (!$login_result)) {
echo "FTP connectie is mislukt!";
echo "Probeerde naar <B>$ftp_server</B> te verbinden met de
gebruiker $ftp_user_name<BR><BR>";
exit;
} else {
echo "Verbonden met FTP server: <B>$ftp_server</B>, als gebruiker
$ftp_user_name<BR><BR>";
}
// navigeren naar de downloadmap
if (ftp_chdir ($conn_id, "/usr/local/WWW/www.snelstart.nl/ftp/WIN")) {
echo "Navigeren naar map WIN<P>";
} else {
echo "Niet gelukt om naar de map WIN te gaan<P>";
}
// laat de bestanden in de huidige map zien
echo "bestanden weergeven:<BR>";
foreach(ftp_nlist($conn_id, '') as $entry) {
echo $entry." ".ftp_size($conn_id,$entry)." bytes<BR>";
}
echo "<BR><B>Download bestand $entry</B><BR><BR>";
$source_file = $entry; // in dit geval is het laatste bestand het bestand
dat gedownload moet worden
$destination_file = "C:\JetSp3E.exe";
// time out verhogen zodat download volledig kan voltooien
if (ftp_set_option($conn_id, FTP_TIMEOUT_SEC, 300)) {
echo "Time out verhoogt naar 300 sec.<BR>";
} else {
echo "Time out kon niet verhoogt worden.<BR>";
}
//download het bestand
$download = ftp_get($conn_id, $destination_file, $source_file, FTP_BINARY);
// controleer de download status
if (!$download) {
echo "FTP download is mislukt!";
} else {
echo "Gedownload: $source_file naar $ftp_server als
$destination_file";
}
// sluit de FTP stream
ftp_close($conn_id);
?>