So laden Sie eine Github-Asset-Datei mit CURL hoch

Lesezeit: 2 Minuten

Ich möchte eine Datei auf meinem Desktop namens „hello.txt“ in mein Git-Repository hochladen, das eine Version hat. Wie mache ich das? Ich habe die Git-Dokumentation gelesen, aber sie sagt so etwas wie:

POST https://<upload_url>/repos/:owner/:repo/releases/:id/assets?name. Wie man das in CURL macht. Ich verstehe das nicht.

Wie poste ich diese Datei als Release-Asset in meiner Github-Version? Vielen Dank

  • superuser.com/q/149329/219423 Suchst du danach?

    – 1615903

    13. Juni 2016 um 9:51 Uhr

  • Ich bin mir nicht sicher, ob es das akzeptiert. Habe nach dem kompletten Git-Befehl gesucht, damit ich ihn nach meinen Bedürfnissen modifizieren und auch verstehen kann

    – tsaebeht

    13. Juni 2016 um 10:03 Uhr

  • In der Frage haben Sie ausdrücklich gesagt, dass Sie dies mit cURL tun möchten. Ist das nicht der Fall?

    – 1615903

    13. Juni 2016 um 10:05 Uhr

  • Ja, aber was ist diese ? Wie lade ich eine Datei auf meinen Desktop hoch? Wenn Sie wissen, wie Sie eine von mir gewünschte Anfrage erstellen, können Sie eine Antwort schreiben?

    – tsaebeht

    13. Juni 2016 um 10:06 Uhr


Benutzeravatar von galeksandrp
galeksandrp

curl \
    -H "Authorization: token $GITHUB_TOKEN" \
    -H "Content-Type: $(file -b --mime-type $FILE)" \
    --data-binary @$FILE \
    "https://uploads.github.com/repos/hubot/singularity/releases/123/assets?name=$(basename $FILE)"

  • Wenn jemand hierher gelangt, nachdem er diese Enterprise-Version von Github ausprobiert hat, haben Sie eine andere Upload-URL anstelle von „uploads.github.com“. Die Upload-URL für Ihre spezielle Unternehmensversion würde beim Erstellen eines neuen Releases als Parameter (upload_url) zurückgegeben

    – akskap

    5. Mai 2017 um 8:54 Uhr

Benutzeravatar von Phani Rithvij
Phani Rithvij

In Anlehnung an die Antwort von @galeksandrp sind hier einige Probleme, auf die ich gestoßen bin

Notiere dass der --data-binary Die Option kopiert den Dateiinhalt zuerst in den Arbeitsspeicher. Wenn Sie also große Dateien haben, sagen wir, dass sie nahe an 2048 MB liegen, dh die absolute Grenze für Github-Veröffentlichungen, und wenn der Arbeitsspeicher nicht ausreicht, schlägt sie fehl curl: option -d: out of memory.

Die Lösung dafür ist die Verwendung -T file path (ohne das @).

Und nebenbei bemerkt, wenn Sie den Upload-Fortschritt sehen möchten, müssen Sie die Ausgabe weiterleiten cat wie zum Beispiel curl <...the whole command> | cat

Der komplette Befehl würde also so aussehen

curl -X POST \
    -H "Content-Length: <file size in bytes>" \
    -H "Content-Type: $(file -b --mime-type $FILE)" \ #from @galeksandrp's answer
    -T "path/to/large/file.ext" \
    -H "Authorization: token $GITHUB_TOKEN" \
    -H "Accept: application/vnd.github.v3+json" \ 
    https://uploads.github.com/repos/<username>/<repo>/releases/<id>/assets?name=<name> | cat

1429260cookie-checkSo laden Sie eine Github-Asset-Datei mit CURL hoch

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy