Pobieranie zdjęcia po FTP

2018-05-08 00:25:49 Post #1 scooti

 
Witam serdecznie wszystkich specjalistów PHP.
Zwracam się z prośbą o pomoc, a za razem z pytaniem. Czy coś takiego jest w ogóle możliwe?
Na wstępie opisze o co mi chodzi i czego potrzebuje, aby uniknąć dodatkowych pytań.

Mam trzy kamery, które są administrowane przez zewnętrzną firmę, kamery co minute robią zdjęcie, które zapisywane jest na serwerze właściciela kamer. Chciał bym publikować zdjęcia w formie krótkiego filmiku (przegląd ostatnich 24 godzin) na własnej stronie internetowej http://krysgraf.pl. Mechanizm do filmu mam i działa, po wgraniu zdjęć do odpowiednich katalogów, skrypt wykonuje montaż i można obejrzeć w 40 sekund ostatnie 24 godziny pogodę i stan lotniska.

No i tu zaczynają się problemy, nie jestem w stanie pobrać zdjęć z serwera po FTP na własny serwer (Komunikat: Plik nie istnieje).
Otrzymałem zgodę i dostęp do katalogów przez FTP, gdzie zapisywane są zdjęcia.
Moje założenia są takie:
1. Skrypt odpalany jest co 5 minut, przez cron-a i loguje się na serwerze.
2. Po zalogowaniu, sprawdza ostatni zapisany plik.
3. Pobieram go do wskazanego prze zemnie katalogu.
4. Podczas zapisu zmieniam jego nazwę.
Poniżej moje wypociny...
<?php
	$ftp = "domena.pl";
	$ftp_port = "1111";
	$uzytkownik = "login:-)";
	$haslo = "haslo:-(";

	echo "<p>Laczenie z $ftp</p>";

	if ( $polaczenie = ftp_connect( $ftp ) ) {

		echo "<p>Polaczono z $ftp</p>";

		if ( ftp_login( $polaczenie, $uzytkownik, $haslo ) ) {
			
			$pliki = ftp_nlist( $polaczenie, '/sciezka/katalogu/docelowego/' );
			foreach ( $pliki as $plik )
				echo "<p>.$plik.</p>";

			// otwarcie katalogu ze zdjęciami
			$data = date( "Ymd" );
			$godz = date( "His" );
			$nazwa = 'WspolnaNazwaDlaPliku';
			$kam1link = "MojKatalog/" . $nazwa . "_" . $data . "_" . $godz . "M";

			if ( $handle = opendir( $polaczenie ) ) {
				while ( false !== ( $file = readdir( $handle ) ) ) {
					if ( is_file( $polaczenie . '/sciezka/katalogu/docelowego/' . $file ) && ( ( $kiedy = filemtime( $polaczenie . '/sciezka/katalogu/docelowego/' . $file ) ) > $najnowszy ) ) {
						$najnowszy = $kiedy;
						$najnowszy_nazwa = $file;
					}
				}
				closedir( $handle );
			}

			// zapisanie i zamiana nazwy pliku na docelowym serwerze
			$size = getimagesize( $polaczenie . '/sciezka/katalogu/docelowego/' . $najnowszy_nazwa );
			$fp = fopen( $polaczenie . '/sciezka/katalogu/docelowego/' . $najnowszy_nazwa, "rb" );

			if ( $size && $fp ) {

				$contents = file_get_contents( $polaczenie . '/sciezka/katalogu/docelowego/' . $najnowszy_nazwa );
				$fp = fopen( "$kam1link.jpg", 'w' );

				fwrite( $fp, $contents );
				fclose( $fp );

				echo '<p>Plik pobrano</p>';

			} else {

				echo '<p>Plik nie istnieje</p>';
			}
			echo '<p>Najnowszy plik to: ' . $najnowszy_nazwa . ', bo z dnia: ' . date( "M-d-Y G:i:s", $najnowszy ) . '</p>';
			include '$najnowszy';

		} else {
			echo "Nie mozna zalogowac uzytkownika $uzytkownik do serwera $ftp";
			ftp_close( $polaczenie );
		}
	} else {
		echo "Nie mozna polaczyc się z serwerem $ftp";
	}
	?>

Skrypty sprawdzałem i działają, ale w odpowiednich warunkach. Połączenie FTP działa i loguje się na serwerze. Jeśli chodzi o pobranie pliku też dział, ale jak chcę pobrać plik z serwera, na którym znajduje się skrypt ( z katalogu a1/ do katalogu b1/).
W momencie kiedy chcę połączyć oba mechanizmy i chcę pobrać plik po FTP (z katalogu domena.pl/sciezka/katalogu/docelowego/ do katakogu MojKatalog/), jest klop :-(.

Ktoś coś Poradzi?

Drobna trudność – a może i nie, serwer, na której jest moja strona posiada interproter PHP5.

2018-05-08 10:36:33 Post #2 nospor

 
is_file( $polaczenie . '/sciezka/katalogu/docelowego/' . $file )
przeciez $polaczenie zawiera uchwyt do polaczenia ftp... nie mozesz sobie tego ot tak radosnie dodawac do jakiejsc sciezki. To sa zupelnie dwie rozne rzeczy.
Analogicznie zle robisz w wielu innych miejscach.

Jak chcesz pobrac plik z ftp to masz uzyc do tego odpowiedniej funkcji a nie laczysz funkcje lokalne by ci nagle zaczely dzialac z uchwytem ftp.
Np. masz uzyc tego
http://php.net/manual/en/function.ftp-fget.php

Odpowiedz

Skrypty użytkowników

  1. Klasa obsługi szablo... Lirdoner
  2. Sekcje user76
  3. Klasa walidująca for... user76
  4. Licznik Gości online korey
  5. Form Builder Comandeer
  6. Dynamiczny licznik z... korey
  7. Captcha Comandeer