• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Überschreibung Dateinname bei Upload auf FTP Server

Status
Für weitere Antworten geschlossen.

newcomer

Mitglied
Guten Abend,

meine Webcam stellt in von mir gewählten Intervallen Bilder auf meinem Pfad im FTP-Server bereit.

Doch jedesmal wird ein anderer Name beim Abspeichern verwendet.

Hersteller der Kamera (Luis) und Provider (t-online) können hier nicht helfen.

Wenn ich das im 1 Minuten-Takt mache, habe ich am Ende des Tages 1440 Bilder in dem Verzeichnis. Das ist natürlich vollkommen überflüssig.

Jetzt suche ich nach einer Möglichkeit, dass das alte Bild auf dem FTP-Server immer wieder von dem neuen Bild überschrieben wird, so dass am Ende des Tages immer nur ein Bild, und zwar das Aktuellste auf dem Server ist.

Zum Hochladen nutze ich "Wise FTP".

Hintergrund: Ich würde gerne meine Webcambilder auf meiner Homepage www.livewetter.org präsentieren wollen und eben möglichst aktuell.

Wäre schön, wenn hier jemand eine Idee für mich hat.

Vielen Dank.

LG

Volker
 
Werbung:
Hallo Sempervivum,

wo gebe ich diesen Befehl ein?

Sorry, ist wahrscheinlich für Dich eine Frage, deren Antwort selbstverständlich ist.

Danke Dir.

LG

Volker
 
Die Kamera sendet jetzt alle 10 Minuten ein Bild im jpg.Format auf meinen FTP-Server in folgenden Pfad:

ftp://starckfamily.homepage.t-online.de/webcam/

Ist jetzt folgende Vorgehensweise korrekt:

Ich kopiere den o.a. HTML-Befehl in eine html.Datei und kopiere diese in das Verzeichnis "webcam".
 
Werbung:
Falls Du den Code von Sempervivum meinst, der enthält PHP-Code. "HTML-Befehle" gibt es nicht. Und nein, du müsstest die Datei im Verzeichnis oberhalb von webcam ablegen. Oder du legst die Datei im Webcam-Verzeichnis ab und passt die Angaben im PHP-Code an.
 
Die Datei mit dem o.a. Befehl habe ich jetzt die Endung .php gegeben und in den Pfad

ftp://starckfamily.homepage.t-online.de/ kopiert.

Also nicht in den Pfad ...../webcam.

Korrekt?
 
Werbung:
Werbung:
Hat ca. 10 Minuten funktioniert:
Auf dem FTP Server war nur das eine Bild "aktuelles-Bild.jpg" und die Aktualisierung war jede Minute.

Auf einmal werden wieder alle Bilder pro Minute abgespeichert und das Bild friert bei 22.15 Uhr ein.
 
Werbung:
Hallo und guten Abend,

zunächst mal einen herzlichen Dank für Deine Mühe. Das Ergebnis lässt sich schon einmal sehen.

Leider wird das Bild aber nicht (mehr) aktualisiert. Es steht immer noch das Bild von 11 Uhr drin.

Alle 5 Minuten wird ein Bild von meiner Kamera auf den FTP-Server hochgeladen.

Leider werden auch die alten jpg`s nicht mehr automatisch gelöscht.

Auf dem FTP-Server stehen im Verzeichnis "webcam" jetzt entsprechend viele jpg´s drin.

Meine Frage und Bitte:

Kann das Skript so geschrieben werden, dass lediglich 5 jpg´s. neben dem aktuellen Bild auf dem FTP gespeichert werden? Alle anderen sollen automatisch gelöscht werden.

Bitte auch nochmal die Aktualisierung ansehen. Hier scheint was nicht zu klappen.

Wenn alles fertig ist, werde ich mich selbstverständlich erkenntlich zeigen, denn ich weiß Deine/Eure Arbeit sehr zu schätzen.

Hier nochmal das aktuelle Skript, wie es auf dem FTP liegt:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="refresh" content="5;" /></head>
<body>
<?php
$dir = "webcam/";
$aktuell ="webcam/aktuelles-bild.jpg";
$bilder = glob($dir . "*.jpg");
// var_dump($bilder);
$mtime = 0;
foreach ($bilder as $bild) {
$mt = filemtime($bild);
if ($mt > $mtime) {
$mtime = $mt;
$neuesbild = $bild;
}
}
if (isset($neuesbild) && $neuesbild != $aktuell) {
rename($neuesbild, $aktuell);
}
$bilder = glob($dir . "*.jpg");
// var_dump($bilder);
foreach ($bilder as $bild) {
if ($bild != $aktuell) unlink($bild);
}
$secs = time();
?>
<img src="webcam/aktuelles-bild.jpg?<?php echo $secs; ?>" />
</body>
</html>

LG

Volker
 
Werbung:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="refresh" content="5;" /></head>
<body>
<?php
$dir = "webcam/";
$aktuell ="webcam/aktuelles-bild.jpg";
$bilder = glob($dir . "*.jpg");
// var_dump($bilder);
$mtime = 0;
foreach ($bilder as $bild) {
$mt = filemtime($bild);
if ($mt > $mtime) {
$mtime = $mt;
$neuesbild = $bild;
}
}
if (isset($neuesbild) && $neuesbild != $aktuell) {
rename($neuesbild, $aktuell);
}
$bilder = glob($dir . "*.jpg");
// var_dump($bilder);
foreach ($bilder as $bild) {
if ($bild != $aktuell) unlink($bild);
}
$secs = time();
?>
<img src="webcam/aktuelles-bild.jpg?<?php echo $secs; ?>" />
</body>
</html>

Könnte Ihr einen Cronjob oben einbauen?

Oder das Skript so ergänzen, dass nur 5 Bilder stehen bleiben und immer das aktuellste Bild angezeigt wird?

Wäre super.

LG

Volker
 
PHP:
<?php

    function getFiles($dir, $exclusions)
    {
       $result = array();
    
       $files = glob($dir . "*.jpg");
    
       foreach ($files as $file)
       {
         if (! in_array($file, $exclusions))
            $result[$file] = filemtime($file);
       }
      
       natsort($result);
    
       return $result;
    }
  
    $aktuell ="webcam/aktuelles-bild.jpg";
  
    $dir = "webcam/";
  
    $exclusions = array($aktuell);
  
    $files = getFiles($dir, $exclusions);
  
    $keys = array_keys($files);
  
    unlink($aktuell);
  
    $next = array_pop($keys);
  
    rename ($next, $aktuell);
  
    for ($i = 0; $i < 5; $i++)
        array_pop($keys);
  
    foreach ($keys as $key)
       unlink($key)
?>

Und falls man auf dem Server keinen Cronjob einrichten kann: https://www.cronjob.de/
 
Werbung:
Vielen Dank, Sempervivum.

Ich habe bei T-Online das Paket "Basic". Hier werden keine Cron-Jobs unterstützt.

Gibt es vielleicht eine andere Möglichkeit, als mit dem Cron-Job zu arbeiten und trotzdem das Ergebnis zu bekommen, welches ich haben will?
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben