• Dateien über die Kommandozeile hochladen (Formular)

    von am 6. August 2009

    Ich schaue mir gerade die Überschrift an. Ganz schön lang. Aber das soll mich jetzt erstmal nicht beschäftigen… Heute geht es darum, über ein Bash-Script PEAR-Pakete zu generieren und automatisch dem Chiara-PEAR-Channel zur Verfügung zu stellen. Wer Chiara kennt, weiß , dass man über ein WebInterface (sehr komfortabel) Pakete hinzufügen kann. Heißt: Nach Authentifizierung über Username/Passwort mit Setzen des des Session-Cookies kann man über ein Formular neue Releases eines Paketes dem Channel hinzufügen. Der Artikel soll aber allgemein erklären wie man Uploads über die Kommandozeile hinbekommt.

    Das soll automatisiert werden.

    Authentifizierung (Für das Chiara-Login):

    curl -d "login=Submit&password=<password>&user=<channeluser>" --cookie-jar /tmp/cookieCurl -s http://<domain des Chiara-Web-Frontends>/index.php > /dev/null;

    Danach liegt dann in /tmp/cookieCurl der Sessioncookie vor. Den will ich dann natürlich gleich nutzen und merk’ mir den Pfad zum Cookie (ist nicht sooo schwer).

    Fileupload (fertiges PEAR-Paket):

    Ich habe mir mit Firebug angeschaut, welche Parameter das Backend erwartet und sie versucht über wget die Parameter und das File an den Channel zu senden. Das geht leider nicht so einfach, weil wget die Header nicht richtig setzt. Daraufhin fiel einem Kollegen ein, dass es ja noch curl für die Kommandozeile gibt und dass man in PHP mit curl sehr schön und einfach Dateien irgendwohin senden kann. Mit der These: “Mit Curl geht das bestimmt!” haben wir also mit curl probiert die Datei hochzuladen. Dabei war das web natürlich hilfreich. Allerdings war der erste Ansatz ohne Erfolg, da alle Parameter des Formulars mit in den POST-Body müssen. Die Lösung ist also (für Chiara-Webfrontend-Paket-Upload):

    curl -F release=@<path to file> -F submitted=1 -F f=0 -F filename=<filename> --cookie /tmp/cookieCurl http://<domain des Chiara-Web-Frontends>/index.php > /tmp/uploadCheck;

    Jetzt kann man im Ergebnis(HTML) noch nach “Success” oder “Failure” grepen und eine Statusmeldung ausgeben und der Upload ist geschehen. Ich hoffe es hilft jemandem mit ähnlichen Problemen. Auch ind eisem Fall gibt es wahrscheinlich viele Wege, die nach Rom führen, aber dies war meiner. Wenn ihr eure eigenen habt, dann lasst und doch daran teilhaben.

    Mike Lohmann arbeitet zur Zeit als Software Architekt beim Verlag Gruner+Jahr AG & Co KG. Er arbeitet seit 1998 im IT-Bereich und seit 2000 im Bereich Webentwicklung.

    Zum Profil von Mike Lohmann

    2 Kommentare »


    • Benni
      am 6. August 2009 um 07:51 Uhr

      Interessanter Artikel, auch wenn ich ihn beispielsweise momentan nicht wirklich benötigen kann.

      Aber den Rechtschreibfehler im Titel kann man noch ausbessern. Kommandozeilean >> Kommandozeile ;-)


    • Nils Langner
      am 6. August 2009 um 08:01 Uhr

      Danke. Ist erledigt. Ich muss noch dazusagen, dass der Artikel von Mike ist und ich die Überschrift umgeschrieben und verhunzt habe ;)

    RSS Feed für Kommentare zu diesem Artikel. TrackBack URL

    Hinterlasse einen Kommentar

    Werbung
    PHP Magazin
    Ausgabe 02/2010

    Dieses Mal mit Artikeln zu den Themen OpenSocial und Apache Shindig, Graphentheorie, Smarty3

    t3n
    Ausgabe 19

    Social Media (R)evolution. Weitere Themen sind noSQL, Crowdsourcing ...

    PHP Journal
    Ausgabe 2/2010

    PHP & Windows optimal nutzen, die besten PHP-CMS im Überblick, Google-API mit Zend Framework nutzen.

    Wir wurden schon öfters gefragt, ob man uns nicht irgendwie unterstützen kann. Die Antwort war immer einfach: Klar! Am einfachsten ist es eure nächsten Einkäufe bei Amazon über unsere Link abzuwickeln. Damit würdet ihr uns schon sehr helfen. Über Co-Autoren freuen wir uns aber noch mehr.