Automatisches PHP Skript, dass alle JPEG Dateien von einem FTP Server auf einen Lokalen Ordner speichert

ri2312

Newbie
Registriert
Juni 2019
Beiträge
4
Hallo zusammen

Ich bin momentan eher neu beim Programmieren und ich habe im moment ein Problem, dass ich nicht behandeln kann.
Ich möchte ein PHP Skript erstellen, dass alle JPEG Dateien von einem FTP Server auf einen Lokalen Ordner speichert. Es sollte automatisch sein. Ich habe nämlich eine Kamera, die eine Motion detection eingebaut hat und jedes mal wenn die Kamera eine Bewegung erkennt, wird ein Bild an meinen FTP Server geschickt. Ich habe im moment dieses Skript, doch es möchte nicht funktionieren.


<?php

// Variablen definieren
$local_file = 'C:\xampp\htdocs\website\Bilder\Kamera-1\Bild.jpg';
$server_file = 'D:\Kamera-1\Kamera_1_Bild2018010104285401.jpg';

$ftp_server = "10.80.4.127";
// Verbindung aufbauen
$conn_id = ftp_connect($ftp_server);

$ftp_user_name = "Administrator";
$ftp_user_pass = "Pw123";
// Login mit Benutzername und Passwort
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// Versuche $server_file herunterzuladen und in $local_file zu speichern
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
echo "$local_file wurde erfolgreich geschrieben\n";
} else {
echo "Ein Fehler ist aufgetreten\n";
}

// Verbindung schließen
ftp_close($conn_id);

?>

Danke schonmal im voraus
 
Hi,

sicher, dass das Serverfile per FTP mit "D:\" beginnt? Du nutzt hier ja das "ftp_get" Beispiel von PHP - aber die Dateinamen passen nicht würde ich sagen!

VG,
Mad
 
Bin da gleicher Meinung wie Madman1209, FTP URL sollte ca so aussehen ftp://10.80.4.127/Kamera-1/file.jpg
 
Ich vernute mal, dass er momentan lokal in einer Testumgebung programmiert, deshalb die Pfade. Ob dann so ein php-skript überhaupt funnktioniert, kann ich nicht beurteilen, da zu wenig Kenntnisse in php.
 
$server_file ist der Lokale Pfad der Datei. Per FTP hast du nicht den gleichen Syntax wie unter Windows. Die Variable $server_file ist also falsch geschrieben.

Wie lautet den das FTP-Root-Verzeichnis, wo ist das Ziel dann genau? Also einfach mal einen FTP-Client nehmen, den Server connecten und zum Ziel navigieren. Den Pfad dann nehmen (ggf. muss die Schreibweise noch etwas korrigiert werden \ zu / ... war schon ewig nicht mehr auf einen FTP - weiß gar nicht mehr wie ein Windows-FTP ausschaut ... wenn es Windows ist)

Zum FTP-Connect-Syntax kann ich jetzt nicht sagen ... aber ich nehme mal an du hast das von php.net etc. Dann sollte das wohl auch richtig sein...

Dann sehe ich hier noch einen Fehler:
$local_file = 'C:\xampp\htdocs\website\Bilder\Kamera-1\Bild.jpg';
$server_file = 'D:\Kamera-1\Kamera_1_Bild2018010104285401.jpg';

Der Serverdateiname ist enthält das Datum und ändert sich somit mit jedem erstellen. Mit DEM Aufruf lädst du immer das gleiche Bild runter. Der Zieldateiname ist aber immer Bild.jpg ... du willst also wohl das LETZTE Aktuelle Bild runterladen? Dann solltest du auf dem FTP ermitteln wie das aktuellste Bild heißt und dieses runterladen. K.a. wie man das macht.


Ich verstehe hier dann noch etwas nicht: Der Server scheint Windows zu sein (Dateipfad + Administrator als Username). Beide Geräte sind im gleichen LAN (10.x.x.x). Ich glaube nicht das die Kamera ein Windows-Betriebssystem hat. Also haben wir jetzt schon 3 Geräte: 2 Windows-Server + Kamera (Proprietär oder Linux). Warum kann die Kamera nicht gleich den anderen Server als Ablage nutzen?

Bietet die Kamera ein Webinterface? Das könntest du von deinem "Lokalen" Server (also da wo das Bild am Ende hinsoll), das Webinterface einbinden (mod_proxy heißt das Modul für Apache). Oder du liest das Webinterface per PHP aus und greifst das Bild einfach ab (file_content oder so ähnlich heißt das mit php)

Vielleicht beschreibst du die Umgebung (die Finale) mal etwas genauer und wer hier welche Aufgabe hat, was man sehen soll etc. Dann kann man vielleicht was finden
 
Und warum machst Du das als PHP? Dazu benötigst Du dann ja auch einen Webserver. Willst Du die Bilder nur vom FTP auf Deinen lokalen PC runterladen?
 
Madman1209 schrieb:
den "D:\" Pfad kannst du per FTP aber doch auch lokal nicht so nutzen - oder täusche ich mich?
Das vermute ich, aber wie gesagt, da kenn ich mich mit php nicht aus :)
 
Einfach kurz zur aufklärung. Ich habe alles physisch. die IP des FTP Servers ist 172.16.16.5 und ich habe eine Firewall, wo ich ein Port-Forwarding erstellt habe. Die IP des Firewalls im WAN ist 10.80.4.127, wo sich ebenfalls mein Laptop drin habe.
Ich habe ein Bild mit dem Netzwerk Plan hier.

Dazu habe ich den Pfad einmal zu ftp://10.80.4.127/ftp/Kamera-1/file.jpg geändert, doch es geht immernoch nicht.

Ich hoffe diese Informationen helfen ein bisschen
 

Anhänge

  • netzwerkplan.PNG
    netzwerkplan.PNG
    36,3 KB · Aufrufe: 467
Hi,

grundsätzlichen Zugriff auf den FTP bekommst du aber? Lass dir doch einfach mal die Verzeichnisse und Dateien anzeigen!

VG,
Mad
 
Madman1209 schrieb:
Hi,

grundsätzlichen Zugriff auf den FTP bekommst du aber? Lass dir doch einfach mal die Verzeichnisse und Dateien anzeigen!

VG,
Mad
Das Funktioniert. Ich kann via CMD wie auch mit dem Explorer auf meinen FTP zugreiffen. Ich kann auch die Dateien Öffnen und anschauen und auf meinen Laptop kopieren.
 
Hi,

dann lass dir die Dateien doch per PHP FTP anzeigen und ausgeben - vermutlich passt der Pfad nach wie vor nicht korrekt.

VG,
Mad
 
Madman1209 schrieb:
Hi,

dann lass dir die Dateien doch per PHP FTP anzeigen und ausgeben - vermutlich passt der Pfad nach wie vor nicht korrekt.

VG,
Mad
Es wird mir diese Fehlermeldung ausgegeben
Warning: ftp_get(): in C:\xampp\htdocs\ftp\ftp.php on line 18
Ein Fehler ist aufgetreten
 
Hi,

und welcher Fehler tritt auf? ftp_get listet ja nicht auf sondern lädt herunter!

VG,
Mad
 

Ähnliche Themen

Zurück
Oben