Kamera-Stream aus "Synology Surveillance Station" in WebFront einbinden

Hallo
Hast du einen extra FTP-User ? Darf der auf den Ordner ueberhaupt zugreifen ?
Hier mal ein (schon etwas aelteres ) Video wie man FTP einrichtet.
https://www.youtube.com/watch?v=l-b9WviVlsA

also:

ja ich habe einen extra FTP User. Ich habe wie gesehen sowohl FTP als auch SFTP aktiviert.
Habe mit SmartFTP die Zugänge auch alle geprüft und kann auf den Pfad zugreifen.

da dein script nicht funktioniert habe ich mit der methode file_exists probiert ob der pfad/datei überhaupt existiert. aber leider auch fehlanzeige.

<?

    $remote_file = "C:\\IP-Camera\\Haustuer\\Haustuer_20181231_174308.jpg"; 
    $ftp_user_name = "IPCameraFTP"; 
    $ftp_user_pass = "xxxxxx"; 
    $ftp_server = "192.168.0.10"; 

    $file = "Common/IPCamera/Haustuer/Haustuer_20181231_174308.jpg";

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

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

    // Verbindung überprüfen 
    if ((!$conn_id) || (!$login_result))  
        { 
        echo "FTP-Verbindung ist fehlgeschlagen!"; 
        echo "Verbindungsaufbau zu $ftp_server mit Benutzername $ftp_user_name versucht."; 
        exit; 
        }  
    else  
        { 
        echo "
Verbunden zu $ftp_server mit Benutzername $ftp_user_name"; 
        } 


$filename = $file;

if (file_exists($filename)) {
    echo "

Die Datei $filename existiert";
} else {
    echo "

Die Datei $filename existiert nicht";
}


    // Datei hochladen 
 //   if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII))  
//        { 
//         echo "
$file erfolgreich hochgeladen
"; 
 //       }     
 //   else  
 //       { 
  //       echo "
Ein Fehler trat beim Hochladen von $file auf
"; 
 //       } 
 

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

?>

Kommt wenigstens ein „Verbunden mit Username …“

ja das kommt :slight_smile: sorry ich dachte, dass ich das bereits erwähnt hätte -.-

Bau mal nach dem einloggen folgendes ein, damit du weisst wo du ueberhaupt bist.
Gibt dir aktuellen Ordner und alle Dateien darin aus

$pwd = ftp_pwd($conn_id);
$buff = ftp_rawlist($conn_id, $pwd);

echo "
aktueller Ordner ".$pwd."
";
print_r($buff);

ich verstehe die ausgabe leider nicht wirklich:

aktueller Ordner /
Array
(
    [0] => drwxrwxrwx   1 root     root              728 Nov 24  2018 Common
)

wasn ditte: drwxrwxrwx ?

Du bist im Home-Ordner deines FTPUsers der einen Unterordner „Common“ hat.

Hab eben nochmal dein Script angesehen. Kann es sein, dass es die Ordner in „Common“ noch
gar nicht gibt ?

$file = "Common/IPCamera/Haustuer/Haustuer_20181231_174308.jpg";

naja so richtig blicke ich da nicht durch. ich verusche das mal darzustellen:

in meiner NAS gibt es zwei festplatten eine hauptplatte und eine zum spiegeln.

auf der hauptplatte gibt es ein volume1, welche einen Ordner Common enthält. Diesen habe ich als Netzlaufwerk in meinem PC eingebunden.
Für den PC ist das quasi wie ein laufwerk mit dem Namen Common. Dort gibt es auch die Ordner „IPCamera/Haustuer/“

auf der NAS in der FileStation sieht das so aus: „/Common/IPCamera/Haustuer“
schaue ich mit die Eigenschaften eines Bildes a, was bereits in dem Ordner liegt sieht es so aus: „/volume1/Common/IPCamera/Haustuer/“

vielleicht bringt dich das weiter.
mitlerweile weiß ich auch was das bedeutet: drwxrwxrwx => 777 also vollzugriff.

Du kannst ja mal mit FTP in den Ordner wechslen.
Vor der Ausgabe der Datein mal folgendes einfuegen.

// Versuche, in das Verzeichnis "irgendwo" zu wechseln
if (ftp_chdir($conn_id, "/Common/IPCamera/Haustuer")) {
    echo "Aktuelles Verzeichnis: " . ftp_pwd($conn_id) . "
";
} else {
    echo "Verzeichniswechsel ist fehlgeschlagen.
";
}

das hat funktioniert! ich habe mein Script jetzt noch einmal wie folgt verändert, leider hat es nach wie vor nichts gebracht. Um Fehler auszuschließen habe ich den TimeStamp des Bildes mal gelöscht. Es heisst nun einfach nurnoch Haustuer.jpg.

<?

    $remote_file = "C:\\IP-Camera\\Haustuer\\Haustuer.jpg"; 
    $ftp_user_name = "IPCameraFTP"; 
    $ftp_user_pass = "xxxxxxx"; 
    $ftp_server = "192.168.0.10"; 

    $file = "/Common/IPCamera/Haustuer/Haustuer.jpg";

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

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

    // Verbindung überprüfen 
    if ((!$conn_id) || (!$login_result))  
        { 
        echo "FTP-Verbindung ist fehlgeschlagen!"; 
        echo "Verbindungsaufbau zu $ftp_server mit Benutzername $ftp_user_name versucht."; 
        exit; 
        }  
    else  
        { 
        echo "
Verbunden zu $ftp_server mit Benutzername $ftp_user_name"; 
        } 

    // Versuche, in das Verzeichnis "irgendwo" zu wechseln 
    if (ftp_chdir($conn_id, "/Common/IPCamera/Haustuer")) { 
        echo "
Aktuelles Verzeichnis: " . ftp_pwd($conn_id) . "
"; 

        $newPath = ftp_pwd($conn_id) . "/Haustuer.jpg";

}    else { 
        echo "
Verzeichniswechsel ist fehlgeschlagen.
"; 
    }  

    // Datei hochladen 
    if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII))  
        { 
         echo "
$file erfolgreich hochgeladen
"; 
        }     
    else  
        { 
         echo "
Ein Fehler trat beim Hochladen von $file auf
"; 
        } 
 

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

?>

der Ordnerwechsel wird korrekt ausgeführt. dann habe ich eine neue Variable einfach dazwischen geschoben und durch den Dateinamen ergänzt.

Hallo
Du hast da anscheinend eine Drehfehler in ftp_put.
remotefile ist fuer mich das File auf dem NAS und file das auf deinem PC.
http://de2.php.net/manual/de/function.ftp-put.php

ja äh… kaum macht mans richtig gehts auch. da habe ich gar nicht nach geschaut, hatte das ursprünglich von dir kopiert und nicht hinterfragt.

aber sehr cool! damit habe ich nun neue möglichkeiten!!! danke vielmals.

Sehr gut und noch nebenher : file_exist ist unter FTP nicht zuverlaessig. Man nimmt meistens:

$res = ftp_size($conn_id, "test.txt");
if ($res != -1) {
    echo "
Groesse $file ist $res bytes";
} else {
    echo "
File existiert nicht";
}

das habe ich gelesen und auch mal spasseshalber probiert. ich kam nur irgendwie nicht zu dem gewünschten ergebnis.

ich verusche das nun alles mal in ein script zu packen und wenn ich meine lösung habe werde ich das rein stellen.

01-01-2019 22-24-42.png

irgendwie habe ich themen durcheinandergeschmissen

blöde frage:

ftp_put() kopiert ja eine datei von meiner lokalen platte auf die NAS.
der befehl erwartet aber, dass auf der NAS bereits eine Datei mit gleichem namen liegt.
was muss ich denn tun, um die datei in einen Pfad zu kopieren? meine snapshots haben einen timestamp und logischerweise gibts diese datei dann noch nicht.

Das waere mir neu , dass eine Datei mit gleichem Namen existieren muss. :confused:

naja wenn ich hier den Dateinamen weg lasse meckert das Script, dass es eine Directory ist.

$file = "/Common/IPCamera/Haustuer/Haustuer.jpg";
$file = "/Common/IPCamera/Haustuer/";

Warning: ftp_put(): /Common/IPCamera/Haustuer: Is a directory.

Wenn du mit „ftp_chdir“ schon im richtigen Ordner bist brauchst du
nur den Dateinamen und nicht mehr den ganzen Pfad nur noch den Dateinamen.