freshman2017
Goto Top

PHP - FTP Upload via cURL

Guten Morgen am Pfingstmontag,

ich lade via cURL und PHP mit nachfolgendem Skript Dateien auf einen FTP Server - womit ich auch sFTP auch zulässig ist:

<?php
$ch = curl_init();
$localfile = '/path/to/file.zip';  
$remotefile = 'filename.zip';  
$fp = fopen($localfile, 'r');  
curl_setopt($ch, CURLOPT_URL, 'ftp://ftp_login:password@ftp.domain.com/'.$remotefile);  
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));
curl_exec ($ch);
$error_no = curl_errno($ch);
curl_close ($ch);
if ($error_no == 0) {
    $error = 'File uploaded succesfully.';  
} else {
    $error = 'File upload error.';  
}
?>

Es kann allerdings vorkommen, dass die Datei die hochgeladen werden sollen, nicht nur filename.zip heisst, sondern es auch vorkommen kann, dass dieser nicht immer fix ist.

Kann mir jemand ausshelfen?

filename*.zip funktioniert leider nicht.

Mit den besten Grüßen

Content-Key: 2999978943

Url: https://administrator.de/contentid/2999978943

Printed on: June 3, 2024 at 23:06 o'clock

Member: colinardo
Solution colinardo Jun 06, 2022 updated at 09:36:01 (UTC)
Goto Top
Servus.
glob() ist dein Freund
<?php
foreach (glob("/path/to/*.zip") as $filename){  
    $ch = curl_init();
    $remotefile = basename($filename);
    $fp = fopen($filename, 'r');  
    curl_setopt($ch, CURLOPT_URL,  'ftp://ftp_login:password@ftp.domain.com/'.$remotefile);  
    curl_setopt($ch, CURLOPT_UPLOAD, 1);
    curl_setopt($ch, CURLOPT_INFILE, $fp);
    curl_setopt($ch, CURLOPT_INFILESIZE, filesize($filename));
    curl_exec ($ch);
    $error_no = curl_errno($ch);
    curl_close ($ch);
    fclose($fp);
    if ($error_no == 0) {
        $error = 'File uploaded succesfully.';  
    } else {
        $error = 'File upload error.';  
    }
}
?>
Grüße Uwe
Member: freshman2017
freshman2017 Jun 06, 2022 at 09:08:41 (UTC)
Goto Top
Servus Uwe,

ich bin mir jetzt nicht sicher, an welcher Stelle ich es bei mir einbauen muss?

Zitat von @colinardo:

Servus.
glob() ist dein Freund
foreach (glob("/path/to/*.zip") as $filename) {  
    echo $filename;
    // ... your upload comes here
}
Grüße Uwe
Member: colinardo
colinardo Jun 06, 2022 updated at 09:22:14 (UTC)
Goto Top
Zitat von @freshman2017:

Servus Uwe,

ich bin mir jetzt nicht sicher, an welcher Stelle ich es bei mir einbauen muss?

Echt jetzt ??

Was steht wohl in $filename?! Genau, der Dateiname, jetzt musst du nur noch 1+1 zusammenzählen ... und den Dateinamen dort einbauen wo du ihn brauchst. Ist das wirklich sooo schwer?

edit. S.o.

Schönen Feiertag.