Überschreibung Dateinname bei Upload auf FTP Server

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

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:

[B]ftp://starckfamily.homepage.t-online.de/webcam/[/B]

Ist jetzt folgende Vorgehensweise korrekt:

Ich kopiere den o.a. HTML-Befehl in eine html.Datei und kopiere diese in das Verzeichnis „webcam“.

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?

Stimmt.

Was soll jetzt bitte funktionieren?

Funktioniert!

Und angezeigt wird auch nur das Aktuellste.

Muss ich das Skript in der Datei, die ich eben oberhalb von Webcam eingefügt habe, austauschen?

http://www.livewetter.org/html/wettercam.html
http://starckfamily.homepage.t-online.de/webcam/aktuelles-bild.jpg
http://starckfamily.homepage.t-online.de/Webcambild.php

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.

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:

<?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(); ?>

LG

Volker

Und genau das ist der Knackpunkt! Solche Dinge erledigt man per Cronjob

http://starckfamily.homepage.t-online.de/Webcambild.php

Den o.a. Link habe ich in meinem Browser mal eingegeben.

Jetzt sind alle Bilder auf dem FTP gelöscht.

<?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(); ?>

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

Nein, könne wir nicht. Warum? Informiere dich bitte, was ein Cronjob ist: https://de.wikipedia.org/wiki/Cron

[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)

?>[/PHP]

Und falls man auf dem Server keinen Cronjob einrichten kann: https://www.cronjob.de/

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?

Nein! Siehe Posting #29