Skip to content

Dateien mit API Token hochladen

Das Hochladen per API Token ist für Skripte, Automatisierungen und externe Programme gedacht. Die Weboberfläche muss nicht geöffnet werden: Website-Adresse, API Token, lokaler Dateipfad und ein echter Hochladekanal reichen aus. Nach erfolgreichem Hochladen gibt das Skript den Dateilink zurück.

API Token bearbeiten

Vorbereitung

Öffne im Administrationsbereich:

text
System Settings -> Security Settings -> API Token

Beim Erstellen oder Bearbeiten des API Token muss die Berechtigung zum Hochladen aktiv sein. Wähle außerdem einen echten Standardkanal. Das Hochladen per API Token verwendet keine intelligente Verteilung; sende in Skripten daher nicht __smart__. Verwende einen echten Kanal wie s3, github oder telegram.

Hochlade-Skripte herunterladen

Die ImgHost-Dokumentation enthält zwei Node.js-Skripte:

SkriptZweck
Skript für Hochladen mit einer AnfrageRuft /upload nur einmal auf; geeignet für kleine Dateien und Schnittstellentests
Skript für Hochladen in TeilenNutzt je nach Kanal Teilübertragung, direkte Übertragung oder eine Plattform-Sitzung; geeignet für große Dateien

Erforderlich ist Node.js 18 oder neuer.

Verfügbare Kanäle auflisten

Beide Skripte können zuerst die für den aktuellen API Token verfügbaren Hochladekanäle anzeigen:

powershell
node imghost-token-single-upload.mjs --base-url "https://your-domain" --token "your API Token" --list-channels
node imghost-token-chunk-upload.mjs --base-url "https://your-domain" --token "your API Token" --list-channels

In diesem Modus sind --file und --channel nicht erforderlich. Die Ausgabe enthält den Standardkanal, den Schlüssel des Hauptkanals, die Namen der Unterkanäle und den Status der Lastverteilung. Geheime Schlüssel, Aktualisierungstoken und andere sensible Einstellungen werden nicht zurückgegeben.

Hochladeart wählen

ArtGeeignet fürVerhalten
Hochladen mit einer AnfrageKleine Dateien, einfache Skripte, SchnittstellentestsSendet die gesamte Datei in einer Anfrage an /upload
Hochladen in TeilenGroße Dateien oder Dateien mit ZeitüberschreitungsrisikoNutzt je nach Kanal Teilübertragung, direkte Übertragung oder eine Plattform-Sitzung

Für große Dateien sollte zuerst das Skript für Hochladen in Teilen verwendet werden. Hochladen mit einer Anfrage wird durch die Anfragegröße bei Cloudflare, den Speicher des Worker und die Grenzen der Zielplattform beschränkt.

Hochladen mit einer Anfrage

Dieses Skript sendet die vollständige Datei in einer Anfrage an /upload:

powershell
node imghost-token-single-upload.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --file "D:\test\image.png" `
  --channel s3 `
  --folder "photos/2026"

Der API Token kann auch als Umgebungsvariable gesetzt werden:

powershell
$env:IMGHOST_API_TOKEN="your API Token"
node imghost-token-single-upload.mjs --base-url "https://your-domain" --file "D:\test\image.png" --channel s3

Parameter für Hochladen mit einer Anfrage

ParameterErforderlichBeschreibung
--base-url <url>JaAdresse der ImgHost-Website, zum Beispiel https://image.ai6.me
--token <token>JaAPI Token; alternativ kann IMGHOST_API_TOKEN genutzt werden
--file <path>JaLokaler Dateipfad
--channel <key>JaEchter Hochladekanal
--folder <path>NeinZielordner, zum Beispiel photos/2026 oder /user/
--name-type <type>NeinBenennungsart; entspricht uploadNameType auf der Serverseite, Standardwert default
--channel-name <name>NeinBestimmter Unterkanal oder Account; ohne Angabe wählt die Serverseite anhand der Kanaleinstellungen
--retries <n>NeinWiederholungen bei vorübergehenden Fehlern; Standardwert 3
--timeout-ms <n>NeinZeitlimit einer Anfrage in Millisekunden; Standardwert 180000
--output <pretty|json>NeinAusgabeformat; Standardwert pretty
--save-response <path>NeinSpeichert das Endergebnis als JSON-Datei
--list-channelsNeinListet nur die verfügbaren Kanäle auf und lädt keine Datei hoch

Kanalschlüssel

KanalschlüsselKanal
telegram / tgTelegram
discord / dcDiscord
cfr2 / r2Cloudflare R2
s3S3
webdav / wdWebDAV-Speicherkanal
github / ghGitHub Releases
gitlab / glGitLab Packages
huggingface / hfHugging Face
onedrive / odOneDrive
googledrive / google / gdGoogle Drive
dropbox / dbDropbox
yandex / yxYandex Disk
pcloud / pdpCloud

Größenlimits für Hochladen mit einer Anfrage

Für Hochladen mit einer Anfrage sollten Dateien möglichst unter 100 MB bleiben. Die folgenden Kanäle haben im Skript feste lokale Grenzen:

KanalGrenze
Telegram20 MiB
Discord10 MiB
S364 MiB
WebDAV64 MiB
GitHub Releases64 MiB
GitLab Packages64 MiB

Bei Überschreitung zeigt das Skript lokal einen Fehler an. Für andere Kanäle ist im Skript keine feste lokale 100-MB-Grenze hinterlegt; ist die Anfrage zu groß, kommt der Fehler von Cloudflare oder von der Zielplattform.

Hochladen in Teilen

Das Skript für Hochladen in Teilen lässt zunächst die Serverseite per API Token das Ziel bestimmen und nutzt danach den Großdateipfad des gewählten Kanals. Der Benutzer muss keine Sitzung erstellen, keine Teile selbst senden, nichts zusammenführen und keinen Abschlussaufruf schreiben.

powershell
node imghost-token-chunk-upload.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --file "D:\test\video.zip" `
  --channel github `
  --folder "photos/2026" `
  --concurrency 3

Parameter für Hochladen in Teilen

ParameterErforderlichBeschreibung
--base-url <url>JaAdresse der ImgHost-Website
--token <token>JaAPI Token; alternativ kann IMGHOST_API_TOKEN genutzt werden
--file <path>JaLokaler Dateipfad
--channel <key>JaEchter Hochladekanal
--folder <path>NeinZielordner
--name-type <type>NeinBenennungsart; entspricht uploadNameType auf der Serverseite, Standardwert default
--channel-name <name>NeinBestimmter Unterkanal oder Account
--concurrency <n>NeinAnzahl gleichzeitiger Übertragungen; Standardwert 1, höchstens 3
--retries <n>NeinWiederholungen bei vorübergehenden Fehlern; Standardwert 3
--timeout-ms <n>NeinZeitlimit jeder Anfrage in Millisekunden; Standardwert 180000
--output <pretty|json>NeinAusgabeformat; Standardwert pretty
--save-response <path>NeinSpeichert das Endergebnis als JSON-Datei
--list-channelsNeinListet nur die verfügbaren Kanäle auf und lädt keine Datei hoch

Pfade für Hochladen in Teilen

KanalschlüsselÜbertragungspfad
telegram / tgEchte Teilsitzung über /upload
discord / dcEchte Teilsitzung über /upload
cfr2 / r2Echte Teilsitzung über /upload
github / ghEchte Teilsitzung über /upload
gitlab / glEchte Teilsitzung über /upload
webdav / wdEchte Teilsitzung über /upload
s3Mehrteilige S3-Übertragung
onedrive / odOneDrive-Übertragungssitzung
googledrive / google / gdFortsetzbare Google-Drive-Übertragung
dropbox / dbDropbox-Übertragungssitzung
yandex / yxDirekter Yandex-Übertragungslink
pcloud / pdpCloud-Übertragungslink
huggingface / hfHugging Face LFS-Übertragung

Yandex verhielt sich bei Archivdateien und komprimierten Dateien in Tests unzuverlässig. Für den Yandex-Kanal sollten nicht komprimierte Dateien verwendet werden.

Rückgabe

Nach erfolgreichem Hochladen gibt das Skript ein Ergebnis ähnlich diesem aus:

text
success
src: /file/photos/2026/example.png
url: https://your-domain/file/photos/2026/example.png
fileId: photos/2026/example.png
FeldBeschreibung
srcInterner Dateipfad der Website
urlVollständiger Zugriffslink, geeignet für eigene Skripte oder Datenbanken
fileIdDatei-ID für spätere Abfragen, Verwaltung oder Protokolle
channelNameBeim Hochladen in Teilen kann der tatsächlich genutzte Unterkanal oder Account zurückgegeben werden

Mit --output json gibt das Skript die vollständige JSON-Antwort aus.

Direkter Aufruf der Schnittstelle für eine Anfrage

Ohne Skript kann die Schnittstelle für Hochladen mit einer Anfrage direkt aufgerufen werden:

text
POST https://your-domain/upload?uploadChannel=s3&uploadFolder=photos/2026&uploadNameType=default
Authorization: Bearer your API Token
Content-Type: multipart/form-data

Formularfeld:

FeldErforderlichBeschreibung
fileJaDatei, die hochgeladen werden soll

Abfrageparameter:

ParameterErforderlichBeschreibung
uploadChannelJaEchter Hochladekanal
uploadFolderNeinZielordner
uploadNameTypeNeinBenennungsart
channelNameNeinUnterkanal oder Account

Bei Erfolg gibt die Schnittstelle ein ähnliches Ergebnis zurück:

json
{
  "success": true,
  "src": "/file/photos/2026/example.png",
  "url": "https://your-domain/file/photos/2026/example.png",
  "fileId": "photos/2026/example.png"
}

Häufige Fragen

Große Dateien schlagen beim Hochladen mit einer Anfrage fehl

Bei /upload in einer Anfrage wird die gesamte Datei auf einmal gesendet. Große Dateien können an Cloudflare, am Speicher des Worker oder an der Zielplattform scheitern. Verwende für große Dateien das Skript für Hochladen in Teilen.

--channel-name ist gesetzt, aber das Hochladen schlägt fehl

Prüfe, ob im gewählten Kanal ein Unterkanal mit genau diesem Namen existiert und aktiviert ist. Ohne --channel-name wählt die Serverseite anhand der Kanaleinstellungen einen verfügbaren Account.

Ergebnis in einem anderen Programm verwenden

Nutze --output json oder --save-response result.json. Das Programm kann aus dem Feld url den vollständigen Dateilink lesen.

Yandex lädt Archive nicht hoch

Yandex unterstützt Archivformate und komprimierte Formate nicht zuverlässig. Das kann an den Plattformrichtlinien liegen. Für Yandex sollten nicht komprimierte Dateien verwendet werden.

Released as user documentation for ImgHost.