MenüHomeBlogMagic

Curl für http Uploads benutzen

Da seit neuestem mein Binärstorage für meine Projekte online ging habe ich natürlich nach einer Möglichkeit gesucht, Dateien automatisch zu releasen und auf meine Page hochzuladen.

Eine eigene Implementierung war mir zu aufwendig, deshalb habe ich mich für curl entschieden da dies für die CLI einfach zu bedienen ist und die Parameter leicht mit jeder Scriptsprache zu generieren sind.

Genug der Vorworte, hier mal ein kleines Beispiel für einen einfachen Transfer:

curl -X POST -F "title=$sFilename" -F "fileXYZ=TestFile.zip" https://coolcow.de/upload.php

Dieses Kommando simuliert ein Formular mit einem Inputfeld für title und einem file-input mit dem Namen fileXYZ,

Die empfangende Seite kann z.B. mit php die Datei so entgegen nehmen:

if(isset($_POST['title']) && isset($_FILES['fileXYZ']["tmp_name"]))
{
    if(move_uploaded_file ($_FILES['fileXYZ']['tmp_name'], "/ZielPfad" ))
    {
      // File transfered, do what ever you want.
    }
}

Weitere nützliche Parameter

Einige Parameter können Transfers noch etwas einfacher oder sicherer machen.

-k

Für meine Debug-Umgebung habe ich selbst generierte Zertifikate im Einsatz, welche natürlich als nicht vertrauenswürdig gelten und curl an der Ausführung hindern. Mit -k als Parameter werden auch unsichere Seiten akzeptiert.

--fail

Sehr nützliches Kommando wenn Fehler beim Transfer abgefangen und ausgewertet werden sollen. Hiermit wird der HTTP-Return-Code der Seite ausgewertet so das curl mit einem ExitCode != 0 beendet wird.
Hintergrund ist, dass curl, auch wenn die Seite z.B. 404 meldet, keinen Fehler zurück gibt, da curl selbst ja keinen Fehler gemacht hat.

BasicAuth

Wer die basic auth Methode auf Seiten einsetzt kann diese bei der URL mit angeben, z.B.:

curl -X POST -F "title=$sFilename" -F "fileXYZ=TestFile.zip" https://username:password@coolcow.de/upload.php

Hier wird username und password als login Daten übergeben.

Permalink: https://adirmeier.de/Blog/ID_362
Tags: Blog, commandline, curl, httpvon am 2021-02-19