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.