Skip to content

Nahrávání souborů pomocí API Token

Nahrávání přes API Token je určené pro skripty, automatizaci a externí programy. Není nutné otevírat ImgHost v prohlížeči; stačí zadat adresu webu, API Token, cestu k místnímu souboru a skutečný nahrávací kanál. Po úspěšném nahrání skript vrátí odkaz na soubor.

Upravit API Token

Příprava

V administraci otevřete:

text
System Settings -> Security Settings -> API Token

Při vytvoření nebo úpravě API Token zapněte oprávnění k nahrávání a vyberte skutečný výchozí kanál. Nahrávání přes API Token nepoužívá chytré rozdělování, proto ve skriptech neposílejte __smart__. Použijte skutečný klíč kanálu, například s3, github nebo telegram.

Stažení nahrávacích skriptů

Dokumentace ImgHost obsahuje dva skripty pro Node.js:

SkriptÚčel
skript pro nahrání jedním požadavkemZavolá /upload pouze jednou; hodí se pro malé soubory a zkoušku rozhraní
skript pro nahrávání po částechPodle kanálu použije nahrávání po částech, přímé nahrávání nebo relaci dané platformy; hodí se pro velké soubory

Na místním počítači je potřeba Node.js 18 nebo novější.

Výpis dostupných kanálů

Oba skripty umějí před nahráváním vypsat kanály dostupné pro aktuální API Token:

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

V tomto režimu není potřeba zadávat --file ani --channel. Výsledek obsahuje výchozí nahrávací kanál, klíč hlavního kanálu, názvy podkanálů a stav vyvažování zátěže. Tajné klíče, obnovovací tokeny ani citlivá konfigurace se nevracejí.

Jak zvolit způsob nahrání

ZpůsobKdy ho použítChování
Nahrání jedním požadavkemMalý soubor, jednoduchý skript, zkouška rozhraníPošle celý soubor jedním požadavkem na /upload
Nahrávání po částechVelký soubor nebo soubor náchylný k vypršení časuPodle kanálu použije části, přímé nahrávání nebo relaci platformy

U velkých souborů nejdříve použijte skript pro nahrávání po částech. Nahrání jedním požadavkem naráží na limit těla požadavku v Cloudflare, paměť Workeru a limity vzdálené platformy.

Nahrání jedním požadavkem

Tento skript pošle celý soubor do /upload v jednom požadavku:

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"

API Token lze zadat také proměnnou prostředí:

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

Parametry nahrání jedním požadavkem

ParametrPovinnéPopis
--base-url <url>AnoAdresa webu ImgHost, například https://image.ai6.me
--token <token>AnoAPI Token; lze použít také proměnnou prostředí IMGHOST_API_TOKEN
--file <path>AnoCesta k místnímu souboru
--channel <key>AnoSkutečný nahrávací kanál
--folder <path>NeCílová složka, například photos/2026 nebo /user/
--name-type <type>NeZpůsob pojmenování; odpovídá uploadNameType na serverové straně, výchozí hodnota je default
--channel-name <name>NeKonkrétní podkanál nebo účet; bez něj server vybere účet podle konfigurace kanálu
--retries <n>NePočet opakování při dočasné chybě; výchozí hodnota 3
--timeout-ms <n>NeČasový limit jednoho požadavku v milisekundách; výchozí hodnota 180000
--output <pretty|json>NeFormát výstupu; výchozí hodnota pretty
--save-response <path>NeUloží konečný výsledek do souboru JSON
--list-channelsNePouze vypíše kanály, soubor nenahrává

Klíče kanálů

Klíč kanáluKanál
telegram / tgTelegram
discord / dcDiscord
cfr2 / r2Cloudflare R2
s3S3
webdav / wdÚložiště WebDAV
github / ghGitHub Releases
gitlab / glGitLab Packages
huggingface / hfHugging Face
onedrive / odOneDrive
googledrive / google / gdGoogle Drive
dropbox / dbDropbox
yandex / yxYandex Disk
pcloud / pdpCloud

Velikostní limity pro nahrání jedním požadavkem

U nahrání jedním požadavkem je vhodné držet soubor pod 100 MB. Následující kanály mají ve skriptu pevnou místní kontrolu:

KanálHorní limit
Telegram20 MiB
Discord10 MiB
S364 MiB
WebDAV64 MiB
GitHub Releases64 MiB
GitLab Packages64 MiB

Při překročení limitu skript vypíše místní chybu ještě před odesláním. Ostatní kanály nemají ve skriptu pevný místní limit 100 MB; příliš velký požadavek může odmítnout Cloudflare nebo vzdálená platforma.

Nahrávání po částech

Skript pro nahrávání po částech nejprve pomocí API Token požádá serverovou stranu o určení cíle nahrání a potom použije cestu pro velké soubory daného kanálu. Uživatel nemusí ručně vytvářet relaci, posílat části, spojovat soubor ani posílat dokončovací požadavek.

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

Parametry nahrávání po částech

ParametrPovinnéPopis
--base-url <url>AnoAdresa webu ImgHost
--token <token>AnoAPI Token; lze použít také proměnnou prostředí IMGHOST_API_TOKEN
--file <path>AnoCesta k místnímu souboru
--channel <key>AnoSkutečný nahrávací kanál
--folder <path>NeCílová složka
--name-type <type>NeZpůsob pojmenování; odpovídá uploadNameType na serverové straně, výchozí hodnota je default
--channel-name <name>NeKonkrétní podkanál nebo účet
--concurrency <n>NePočet souběžných nahrávání; výchozí hodnota 1, maximum 3
--retries <n>NePočet opakování při dočasné chybě; výchozí hodnota 3
--timeout-ms <n>NeČasový limit každého požadavku v milisekundách; výchozí hodnota 180000
--output <pretty|json>NeFormát výstupu; výchozí hodnota pretty
--save-response <path>NeUloží konečný výsledek do souboru JSON
--list-channelsNePouze vypíše kanály, soubor nenahrává

Cesty nahrávání po částech

Klíč kanáluCesta nahrání
telegram / tgSkutečná relace po částech přes /upload
discord / dcSkutečná relace po částech přes /upload
cfr2 / r2Skutečná relace po částech přes /upload
github / ghSkutečná relace po částech přes /upload
gitlab / glSkutečná relace po částech přes /upload
webdav / wdSkutečná relace po částech přes /upload
s3Vícedílné nahrávání S3
onedrive / odNahrávací relace OneDrive
googledrive / google / gdObnovitelné nahrávání Google Drive
dropbox / dbNahrávací relace Dropbox
yandex / yxPřímý nahrávací odkaz Yandex
pcloud / pdNahrávací odkaz pCloud
huggingface / hfNahrávání Hugging Face LFS

Při testech byly archivní a komprimované soubory na Yandexu nespolehlivé. Pro kanál Yandex používejte nekomprimované soubory.

Výsledek

Po úspěšném nahrání skript zobrazí podobný výsledek:

text
success
src: /file/photos/2026/example.png
url: https://your-domain/file/photos/2026/example.png
fileId: photos/2026/example.png
PolePopis
srcCesta souboru uvnitř webu
urlÚplný přístupový odkaz vhodný k uložení ve skriptu nebo databázi
fileIdIdentifikátor souboru pro pozdější dotazy, správu nebo záznamy
channelNameU nahrávání po částech může uvádět skutečně použitý podkanál nebo účet

S volbou --output json skript vypíše úplný JSON vhodný pro další zpracování.

Přímé volání rozhraní pro nahrání jedním požadavkem

Rozhraní lze volat i bez skriptu:

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

Pole formuláře:

PolePovinnéPopis
fileAnoSoubor k nahrání

Parametry dotazu:

ParametrPovinnéPopis
uploadChannelAnoSkutečný nahrávací kanál
uploadFolderNeCílová složka
uploadNameTypeNeZpůsob pojmenování
channelNameNeKonkrétní podkanál nebo účet

Při úspěchu rozhraní vrátí podobný výsledek:

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

Časté otázky

Velký soubor selže při nahrání jedním požadavkem

Jedno volání /upload posílá celý soubor v jednom požadavku. Velký soubor může narazit na limit Cloudflare, paměť Workeru nebo limit vzdálené platformy. Pro velké soubory použijte skript pro nahrávání po částech.

--channel-name je zadané, ale nahrání stále selže

Ověřte, že ve zvoleném kanálu existuje podkanál se stejným názvem a že je zapnutý. Bez --channel-name vybere serverová strana dostupný účet podle konfigurace kanálu.

Chci výsledek použít v jiném programu

Použijte --output json, nebo přidejte --save-response result.json. Program může z JSON přečíst pole url a získat úplný odkaz na soubor.

Yandex odmítá archiv

Yandex nepodporuje archivní a komprimované formáty spolehlivě; může to souviset s pravidly platformy. Pro kanál Yandex použijte nekomprimovaný soubor.

Released as user documentation for ImgHost.