2 Stimmen

Optionen zum Lesen eines entfernten Verzeichnisses

Ich habe ein Skript, das Bilder in Abhängigkeit von bestimmten Bedingungen anzeigt. Wenn keine der Bedingungen erfüllt ist, möchte ich zufällig eines der Standardbilder (Backup) anzeigen. Diese anderen Bilder befinden sich auf einem entfernten Server. Ich habe gelesen, dass man ein Verzeichnis auf einem entfernten Server nicht lesen kann, was auch Sinn macht.

Ist es das Beste, eine Datei in das Bildverzeichnis des Remote-Servers zu legen, die alle Bilddateinamen ausgibt, damit ich sie mit dem anderen Server analysieren kann? Gibt es einen einfacheren Weg?

Ich ziehe es vor, kein FTP zu verwenden ( http://php.net/manual/en/book.ftp.php ).

Welche Möglichkeiten habe ich, um im Grunde nur die Namen der Bilder in diesem Ordner zu erhalten?

Danke! Ryan

UPDATE

@ Marios Antwort ist leicht und funktioniert wie ein Zauber. Es ist genau die Lösung, von der ich dachte, ich wolle sie haben, aber nachdem ich noch einmal darüber nachgedacht und gelesen hatte, dass sogar @mario es anders machen würde, entschied ich mich für @ bensiu's Antwort Denn für mich sind Kontrolle und Sicherheit wichtiger als Bequemlichkeit. Bei der Methode von @mario ist es sehr schwer zu wissen, ob die Daten, die man erhält, gut sind (mangelnde Kontrolle) und man gibt sein Verzeichnis / einige Serverinformationen preis (Sicherheit). Der Vorschlag von @bensiu erfordert eine zweite Datei (Unbequemlichkeit), bietet aber die Kontrolle und Sicherheit, für die ich mich letztendlich entschieden habe!

Ich danke Ihnen beiden!

-Ryan

2voto

mario Punkte 141130

Ich würde ein genaues und dediziertes Handler-Skript bevorzugen, wie es @bensiu beschrieben hat.

Eine Alternative wäre jedoch das Auslesen einer Verzeichnisliste. Ein einfaches, von Apache generiertes mod_index-Listing würde dafür ausreichen:

$html = file_get_contents("http://example.com/images/");
preg_match_all('/<a href="([-\w\d.]+\.(jpeg|png|gif))"/', $html, $uu);
$files = $uu[1];

1voto

bensiu Punkte 22810

Ich hoffe, Sie haben zumindest Zugang zu einem Remote-Server...

Sie können dort ein Skript "A" platzieren, das die Arbeit lokal erledigt und eine Liste der Bilder im gewünschten Format zurückgibt (Rohtext, JSON, XML...), und dieses Skript wird per curl von Ihrem Server .... aufgerufen.

Es ist auch ratsam, dafür zu sorgen, dass beim Aufruf von Skript "A" zumindest ein geheimer Schlüssel übergeben wird, um einen unberechtigten Zugriff zu verhindern (keine perfekte Lösung, aber es könnte genügen).

0voto

ayush Punkte 13870

Wenn Sie PHP5 und den HTTP-Stream-Wrapper auf Ihrem Server aktiviert haben, ist es sehr einfach, ihn in eine lokale Datei zu kopieren:

copy('http://somedomain.com/file.jpeg', '/tmp/file.jpeg');

Einige Hosts deaktivieren die copy()-Funktion, dann können Sie Ihre eigene -

<?php 
    function copyemz($file1,$file2){ 
          $contentx =@file_get_contents($file1); 
                   $openedfile = fopen($file2, "w"); 
                   fwrite($openedfile, $contentx); 
                   fclose($openedfile); 
                    if ($contentx === FALSE) { 
                    $status=false; 
                    }else $status=true; 

                    return $status; 
    } 
?>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X