@codenerd på twitter Mit seneste tweet:

Upload filer i PHP via FTP med cURL

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:

PHP
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.

Skriv en kommentar

Krævede felter er markeret med *.

*


Dansk Foe Guide