I mit tidligere blogindlæg så vi på hvordan du kunne håndtere FTP upload/download mm via de indbyggede FTP funktioner i PHP. Men hvad nu hvis man sidder på en host hvor disse funktioner er slået fra? Hvis cURL er slået til på serveren, ja så er løsningen her. Jeg sad tilfældigt og surfede dokumentationen til cURL (php:curl), og så at det var muligt, så det måtte jeg lige afprøve, hvilket blev til følgende kode:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php
$ftpBruger = 'dit_brugernavn'; //din ftp bruger
$ftpPass = 'dit_password'; //dit ftp password
$ftpServer = 'ftp.ditdomaene.dk'; //din ftp server
$ftpSti = '/'; //stien du ønsker at uploade til
$fil = 'dinfil.ext'; //den lokale fil på serveren der skal overføres
$ch = curl_init(); //start curl
$fp = fopen($fil,'r'); //åben vores fil for læsning
//fuld ftp sti hvor vi ønsker at uploade til inkl brugernavn og password
curl_setopt($ch, CURLOPT_URL, 'ftp://'.$ftpBruger.':'.$ftpPass.'@'.$ftpServer.$ftpSti.$fil);
curl_setopt($ch, CURLOPT_UPLOAD, 1); //upload
curl_setopt($ch, CURLOPT_INFILE, $fp); //send fil object til curl
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($fil)); //fil størrelse på vores upload
curl_exec($ch); //udfør curl kald (upload fil)
$fejl = curl_error($ch); //evt fejl gemmer vi i $fejl;
curl_close ($ch); //luk curl
fclose($fp); //luk fil
if (empty($fejl)) { //hvis fejl er tom er filen uploadet
echo 'Filen blev uploadet';
} else { //ellers udskriver vi fejlen
echo $fejl;
}
?> |
Personligt foretrækker jeg nu de indbyggede FTP funktioner, men ovenstående kode virker også ganske fint.