Skip to content

Przesyłanie plików za pomocą API Token

Przesyłanie za pomocą API Token jest przeznaczone dla skryptów, zadań automatyzacji i programów zewnętrznych. Nie trzeba otwierać interfejsu WWW. Jeśli podasz adres URL witryny, token, lokalną ścieżkę pliku oraz rzeczywisty kanał przesyłania, plik zostanie przesłany do ImgHost, a odpowiedź będzie zawierać jego adres URL.

Edycja API Token

Zanim zaczniesz

Otwórz panel administracyjny, a następnie przejdź do:

text
System Settings -> Security Settings -> API Token

Podczas tworzenia lub edytowania API Token upewnij się, że ma uprawnienie do przesyłania i używa rzeczywistego domyślnego kanału przesyłania. Przesyłanie przez API Token nie korzysta z wejścia inteligentnego rozdzielania, a skrypty również powinny przekazywać rzeczywisty kanał.

Pobieranie skryptów przesyłania

Pakiet dokumentacji udostępnia dwa skrypty Node.js:

SkryptPrzeznaczenie
skrypt przesyłania pojedynczym żądaniemWywołuje /upload jeden raz. Przydatny przy małych plikach i testach łączności.
skrypt przesyłania fragmentamiUżywa fragmentowania przez API Token, przesyłania bezpośredniego albo sesji przesyłania platformy. Zalecany dla dużych plików.

Wymagany jest Node.js 18 lub nowszy.

Lista dostępnych kanałów

Oba skrypty mogą wyświetlić kanały przesyłania dostępne dla bieżącego 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

Podczas wyświetlania kanałów --file i --channel nie są wymagane. Odpowiedź zawiera domyślny kanał przesyłania, klucze kanałów przesyłania, nazwy kanałów podrzędnych oraz stan równoważenia obciążenia. Sekrety, tokeny odświeżania i inne poufne wartości konfiguracji nie są zwracane.

Wybór trybu przesyłania

TrybNajlepszy doOpis
Przesyłanie pojedynczym żądaniemMałe pliki, proste skrypty, testy łącznościWysyła cały plik do /upload w jednym żądaniu.
Przesyłanie fragmentamiDuże pliki lub pliki, przy których może wystąpić przekroczenie czasuSkrypt wybiera przepływ fragmentowany, bezpośredni albo oparty na sesji przesyłania właściwy dla danego kanału.

W przypadku większych plików w pierwszej kolejności używaj skryptu przesyłania fragmentami. Przesyłanie pojedynczym żądaniem ograniczają rozmiar żądania Cloudflare, pamięć Workera oraz limity poszczególnych platform.

Przesyłanie pojedynczym żądaniem

Skrypt przesyłania pojedynczym żądaniem wysyła jedno żądanie do /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"

Token możesz także umieścić w zmiennej środowiskowej:

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 przesyłania pojedynczym żądaniem

ParametrWymaganyOpis
--base-url <url>TakAdres URL witryny ImgHost, na przykład https://image.ai6.me.
--token <token>TakAPI Token. Możesz też użyć zmiennej środowiskowej IMGHOST_API_TOKEN.
--file <path>TakLokalna ścieżka pliku.
--channel <key>TakKanał przesyłania.
--folder <path>NieFolder przesyłania, na przykład photos/2026 albo /user/.
--name-type <type>NieTryb nazewnictwa mapowany na serwerowe uploadNameType. Domyślnie default.
--channel-name <name>NieWybiera kanał podrzędny lub konto. Jeśli zostanie pominięty, decyzję podejmuje konfiguracja kanału w serwerze.
--retries <n>NieLiczba ponowień przy błędach tymczasowych. Domyślnie 3.
--timeout-ms <n>NieLimit czasu żądania. Domyślnie 180000.
--output <pretty|json>NieFormat wyjścia. Domyślnie pretty.
--save-response <path>NieZapisuje końcową odpowiedź JSON do pliku.
--list-channelsNieWyświetla kanały dostępne dla bieżącego tokena i kończy działanie.

Kanały dla przesyłania pojedynczym żądaniem

Klucz kanałuKanał
telegram / tgTelegram
discord / dcDiscord
cfr2 / r2Cloudflare R2
s3S3
webdav / wdKanał magazynu WebDAV
github / ghGitHub Releases
gitlab / glGitLab Packages
huggingface / hfHugging Face
onedrive / odOneDrive
googledrive / google / gdGoogle Drive
dropbox / dbDropbox
yandex / yxYandex Disk
pcloud / pdpCloud

Limity rozmiaru przy przesyłaniu pojedynczym żądaniem

W miarę możliwości przesyłaj pojedynczym żądaniem pliki mniejsze niż 100 MB.

Te kanały mają jawne progi blokowania dla pojedynczego żądania /upload:

KanałLimit pojedynczego żądania
Telegram20 MiB
Discord10 MiB
S364 MiB
WebDAV64 MiB
GitHub Releases64 MiB
GitLab Packages64 MiB

Gdy plik przekroczy jeden z tych limitów, skrypt zgłosi odpowiedni błąd lokalnie. Inne kanały nie mają w skrypcie zakodowanej lokalnej kontroli 100 MB. Jeśli treść żądania przekroczy możliwości Cloudflare albo platformy docelowej, błąd zwróci Cloudflare lub zdalna platforma.

Przesyłanie fragmentami

Skrypt przesyłania fragmentami najpierw prosi serwer o ustalenie pliku docelowego, a następnie wykonuje przepływ dużych plików dla wybranego kanału. Nie musisz samodzielnie pisać żądań sesji fragmentowania, scalania ani kończenia operacji.

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 przesyłania fragmentami

ParametrWymaganyOpis
--base-url <url>TakAdres URL witryny ImgHost.
--token <token>TakAPI Token. Możesz też użyć zmiennej środowiskowej IMGHOST_API_TOKEN.
--file <path>TakLokalna ścieżka pliku.
--channel <key>TakKanał przesyłania.
--folder <path>NieFolder przesyłania.
--name-type <type>NieTryb nazewnictwa mapowany na serwerowe uploadNameType. Domyślnie default.
--channel-name <name>NieWybiera kanał podrzędny lub konto. Jeśli zostanie pominięty, decyzję podejmuje konfiguracja kanału w serwerze.
--concurrency <n>NieLiczba równoległych przesyłań. Domyślnie 1, maksymalnie 3.
--retries <n>NieLiczba ponowień przy błędach tymczasowych. Domyślnie 3.
--timeout-ms <n>NieLimit czasu pojedynczego żądania. Domyślnie 180000.
--output <pretty|json>NieFormat wyjścia. Domyślnie pretty.
--save-response <path>NieZapisuje końcową odpowiedź JSON do pliku.
--list-channelsNieWyświetla kanały dostępne dla bieżącego tokena i kończy działanie.

Kanały dla przesyłania fragmentami

Klucz kanałuPrzepływ przesyłania
telegram / tgRzeczywista sesja fragmentowanego /upload
discord / dcRzeczywista sesja fragmentowanego /upload
cfr2 / r2Rzeczywista sesja fragmentowanego /upload
github / ghRzeczywista sesja fragmentowanego /upload
gitlab / glRzeczywista sesja fragmentowanego /upload
webdav / wdRzeczywista sesja fragmentowanego /upload
s3Wieloczęściowe przesyłanie S3
onedrive / odSesja przesyłania OneDrive
googledrive / google / gdWznawialne przesyłanie Google Drive
dropbox / dbSesja przesyłania Dropbox
yandex / yxBezpośredni adres URL przesyłania Yandex
pcloud / pdLink przesyłania pCloud
huggingface / hfPrzesyłanie Hugging Face LFS

Próbki plików skompresowanych dla Yandex były niestabilne w testach. Potwierdzono, że pliki nieskompresowane przesyłają się poprawnie.

Odpowiedź po przesłaniu

Po udanym przesłaniu skrypt wypisuje:

text
success
src: /file/photos/2026/example.png
url: https://your-domain/file/photos/2026/example.png
fileId: photos/2026/example.png
PoleOpis
srcWewnętrzna ścieżka pliku w witrynie.
urlPełny publiczny adres URL, odpowiedni dla własnych skryptów lub rekordów w bazie danych.
fileIdID pliku, przydatne przy późniejszych zapytaniach, zarządzaniu lub logach.
channelNameSkrypt przesyłania fragmentami może zwrócić faktycznie użyty kanał podrzędny lub konto.

Przy --output json skrypt wypisuje pełną odpowiedź JSON do użycia programowego.

Bezpośrednie wywołanie API pojedynczego żądania

Jeśli nie używasz skryptu, możesz bezpośrednio wywołać punkt końcowy przesyłania pojedynczym żądaniem:

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

Pole formularza:

PoleWymaganeOpis
fileTakPlik do przesłania.

Parametry query:

ParametrWymaganyOpis
uploadChannelTakRzeczywisty kanał przesyłania.
uploadFolderNieFolder przesyłania.
uploadNameTypeNieTryb nazewnictwa.
channelNameNieWybiera kanał podrzędny lub konto.

Udane odpowiedzi wyglądają tak:

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

FAQ

Duże przesyłanie pojedynczym żądaniem kończy się niepowodzeniem

Pojedyncze żądanie /upload wysyła cały plik naraz. Duże pliki mogą zostać zablokowane przez Cloudflare albo zdalną platformę. Dla dużych plików używaj skryptu przesyłania fragmentami.

--channel-name jest ustawione, ale przesyłanie nadal się nie udaje

Sprawdź, czy wybrany kanał rzeczywiście ma kanał podrzędny o tej nazwie i czy jest on włączony. Jeśli --channel-name zostanie pominięte, serwer wybiera dostępne konto zgodnie z konfiguracją danego kanału.

Chcę użyć wyniku w innym programie

Użyj --output json albo dodaj --save-response result.json. Odczytaj pole url, aby uzyskać pełny adres URL pliku.

Yandex nie może przesyłać archiwów

Yandex nie obsługuje formatów archiwów. Może to wynikać z zasad tej platformy. Przy korzystaniu z Yandex w miarę możliwości przesyłaj pliki niebędące archiwami.

Released as user documentation for ImgHost.