Stefan Bach: Datei über das HTT-Protokol lesen (CGI)

Hallo!

Wie kann ich mit CGI (genauer: Perl) eine Datei über HTTP lesen? Genüht es beim öffnen "<http://irgendwas.com/düdeldü" anzugeben?

Gruß
  Stefan

  1. Hallo!

    Wie kann ich mit CGI (genauer: Perl) eine Datei über HTTP lesen? Genüht es beim öffnen "<http://irgendwas.com/düdeldü" anzugeben?

    Gruß
      Stefan

    Hallo Stefan,

    Falls sich die Datei auf einem fremden Rechner befindet,
    kann dies prinzipiell nur funktionieren, wenn auf diesem ein
    Webserver laeuft - also eher nicht.
    Dateien auf dem Rechner, auf dem auch das Perl-Skript laufen
    soll, lassen sich dagegen einfach direkt durch den Pfad ansprechen

    • fuer Zugriffe via http://localhost/... muss das Perl-Skript ansonsten
      zumindest ueber aehnliche Funktionen wie ein Web-Browser verfuegen
      koennen (z.B. Codierung/Decodierung der verschiedenen MIME-Typen usw.),
      was wiederum unueblich ist.

    Um nun Dateien von entfernten Rechnern trotzdem bearbeiten zu koennen,
    laesst man sie sich am besten via File-Upload schicken:

    <form method="post" enctype="multipart/form-data" action="http://myHost/cgi-bin/myCgi.xxx">
    ...
    <input type="file" name="uploadFile">
    ...
    </form>

    In Perl gibt es bereits Standard-Funktionen (in CGI.pm ?!), die auch
    das 'multipart/form-data' Fomat einlesen koennen.
    Diese Datei kann man dann lokal zwischenspeichern und bearbeiten.

    Gruesse,

    Andreas

  2. Hallo Stefan

    Wie kann ich mit CGI (genauer: Perl) eine Datei über HTTP lesen? Genüht es beim öffnen "<http://irgendwas.com/düdeldü" anzugeben?

    Nein. Die open-Funktion liest Dateien auf Betriebssystemebene - ohne Internet-Protokoll. Deshalb funktioniert das Lesen mit open() nur von Orten, die fuer das Server-Betriebssystem lokal erreichbar sind (eigenes Laufwerk, Netzwlaufwerke, gemountete Laufwerke und so was).

    Um Daten von einem anderen Server zu empfangen, musst Du eine Internetverbindung zu dem Server aufbauen. Dazu gibt es in Perl Funktionen - gethostbyaddr(), gethostbyname() usw. Die sind alle in der Perl-Funktionsreferenz dokumentiert, die beim Perl-Interpreter im Unterverzeichnis docs in der Datei perlfunc.html aufgelistet sind.

    Viele Gruesse
      Stefan Muenz

    1. Um Daten von einem anderen Server zu empfangen, musst Du eine Internetverbindung zu dem Server aufbauen. Dazu gibt es in Perl Funktionen - gethostbyaddr(), gethostbyname() usw. Die sind alle in der Perl-Funktionsreferenz dokumentiert, die beim Perl-Interpreter im Unterverzeichnis docs in der Datei perlfunc.html aufgelistet sind.

      Viele Gruesse
        Stefan Muenz

      Hallo Stefan!

      Die Dokumentation hat mir leider nicht weitergeholfen. Hast du ein konkretes Beispiel oder weißt du, wo soetwas in deutsch dokumentiert ist?

      Gruß
        Stefan