Skip to content

Caricare file con API Token

Il caricamento tramite API Token è pensato per script, automazioni e programmi di terze parti. Non serve aprire il sito: bastano indirizzo ImgHost, Token, percorso del file e canale reale di caricamento per inviare il file e ottenere il link finale.

Modifica API Token

Preparazione

Nel pannello di amministrazione apri:

text
System Settings -> Security Settings -> API Token

Quando crei o modifichi un API Token, verifica che abbia il permesso di caricare file e scegli un canale predefinito reale. Il caricamento tramite API Token non usa l'ingresso di distribuzione intelligente; anche negli script devi passare un canale reale.

Scaricare gli script

La documentazione include due script Node.js:

ScriptUso
script di caricamento singoloChiama /upload una sola volta; adatto a file piccoli e test di connettività
script di caricamento a blocchiUsa API a blocchi, caricamento diretto o sessioni della piattaforma; adatto a file grandi

Serve Node.js 18 o superiore installato in locale.

Elencare i canali disponibili

Entrambi gli script possono elencare i canali disponibili per il Token corrente:

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 questa modalità non servono --file e --channel. La risposta contiene il canale predefinito, il parametro del canale principale, i nomi dei sottocanali e lo stato del bilanciamento del carico. Non vengono restituiti segreti, token di aggiornamento o altre configurazioni sensibili.

Scegliere il tipo di caricamento

MetodoQuando usarloNota
Caricamento singoloFile piccoli, script semplici, test APIIl file intero viene inviato in una richiesta a /upload
Caricamento a blocchiFile grandi o soggetti a scadenza del tempo limiteLo script usa blocchi, caricamento diretto o sessione della piattaforma in base al canale

Per file grandi usa di preferenza lo script a blocchi. Il caricamento singolo dipende dal limite del corpo richiesta di Cloudflare, dalla memoria del Worker e dai limiti del canale remoto.

Caricamento singolo

Lo script di caricamento singolo invia una sola richiesta a /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"

Puoi anche mettere il Token in una variabile d'ambiente:

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

Parametri del caricamento singolo

ParametroObbligatorioDescrizione
--base-url <url>Indirizzo del sito ImgHost, ad esempio https://image.ai6.me
--token <token>API Token; in alternativa usa IMGHOST_API_TOKEN
--file <path>Percorso del file locale
--channel <key>Canale di caricamento
--folder <path>NoCartella di destinazione, ad esempio photos/2026 o /user/
--name-type <type>NoStrategia di nome file, corrisponde a uploadNameType; predefinita default
--channel-name <name>NoSottocanale o account specifico; se omesso decide la configurazione del server
--retries <n>NoTentativi per errori temporanei; predefinito 3
--timeout-ms <n>NoTempo limite della singola richiesta; predefinito 180000
--output <pretty|json>NoFormato di output; predefinito pretty
--save-response <path>NoSalva il risultato finale in JSON
--list-channelsNoElenca i canali disponibili per il Token senza caricare file

Canali del caricamento singolo

ParametroCanale
telegram / tgTelegram
discord / dcDiscord
cfr2 / r2Cloudflare R2
s3S3
webdav / wdCanale di archiviazione WebDAV
github / ghGitHub Releases
gitlab / glGitLab Packages
huggingface / hfHugging Face
onedrive / odOneDrive
googledrive / google / gdGoogle Drive
dropbox / dbDropbox
yandex / yxYandex Disk
pcloud / pdpCloud

Limiti del caricamento singolo, con file consigliati sotto 100 MB

Questi canali hanno un limite esplicito per una singola richiesta /upload:

CanaleLimite del caricamento singolo
Telegram20 MiB
Discord10 MiB
S364 MiB
WebDAV64 MiB
GitHub Releases64 MiB
GitLab Packages64 MiB

Se il file supera il limite, lo script mostra subito l'errore locale corrispondente. Gli altri canali non hanno un limite locale fisso di 100 MB nello script; se il corpo richiesta supera la capacità di Cloudflare o della piattaforma, l'errore arriverà da Cloudflare o dal servizio remoto.

Caricamento a blocchi

Lo script a blocchi usa prima l'API Token per far risolvere al server la destinazione del file, poi segue il flusso per file grandi del canale scelto. Non devi implementare a mano sessioni, blocchi, unione o completamento.

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

Parametri del caricamento a blocchi

ParametroObbligatorioDescrizione
--base-url <url>Indirizzo del sito ImgHost
--token <token>API Token; in alternativa usa IMGHOST_API_TOKEN
--file <path>Percorso del file locale
--channel <key>Canale di caricamento
--folder <path>NoCartella di destinazione
--name-type <type>NoStrategia di nome file, corrisponde a uploadNameType; predefinita default
--channel-name <name>NoSottocanale o account specifico; se omesso decide la configurazione del server
--concurrency <n>NoCaricamenti paralleli; predefinito 1, massimo 3
--retries <n>NoTentativi per errori temporanei; predefinito 3
--timeout-ms <n>NoTempo limite di ogni richiesta; predefinito 180000
--output <pretty|json>NoFormato di output; predefinito pretty
--save-response <path>NoSalva il risultato finale in JSON
--list-channelsNoElenca i canali disponibili per il Token senza caricare file

Canali del caricamento a blocchi

ParametroFlusso di caricamento
telegram / tgVera sessione a blocchi tramite /upload
discord / dcVera sessione a blocchi tramite /upload
cfr2 / r2Vera sessione a blocchi tramite /upload
github / ghVera sessione a blocchi tramite /upload
gitlab / glVera sessione a blocchi tramite /upload
webdav / wdVera sessione a blocchi tramite /upload
s3Caricamento multipart S3
onedrive / odSessione di caricamento OneDrive
googledrive / google / gdCaricamento riprendibile Google Drive
dropbox / dbSessione di caricamento Dropbox
yandex / yxURL di caricamento diretto Yandex
pcloud / pdLink di caricamento pCloud
huggingface / hfCaricamento Hugging Face LFS

Nei test i file compressi su Yandex sono risultati instabili; i file non compressi sono stati caricati correttamente.

Risultato restituito

Dopo un caricamento riuscito, lo script stampa:

text
success
src: /file/photos/2026/example.png
url: https://your-domain/file/photos/2026/example.png
fileId: photos/2026/example.png
CampoDescrizione
srcPercorso interno del file nel sito
urlLink completo, pronto per script o database
fileIdID del file, utile per interrogazioni, gestione o registri
channelNameLo script a blocchi può restituire il sottocanale o account usato davvero

Con --output json, lo script stampa il JSON completo per ulteriori elaborazioni.

Chiamare direttamente l'API di caricamento singolo

Senza script puoi chiamare direttamente l'API di caricamento singolo:

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

Campo del form:

CampoObbligatorioDescrizione
fileFile da caricare

Parametri della query:

ParametroObbligatorioDescrizione
uploadChannelCanale reale di caricamento
uploadFolderNoCartella di destinazione
uploadNameTypeNoStrategia di nome file
channelNameNoSottocanale o account specifico

In caso di successo l'API restituisce un risultato simile:

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

Domande frequenti

Il caricamento singolo di un file grande fallisce

/upload in modalità singola invia l'intero file in una richiesta. I file grandi possono essere bloccati da Cloudflare o dalla piattaforma remota. Per file grandi usa lo script a blocchi.

Ho passato --channel-name, ma fallisce ancora

Controlla che nel canale scelto esista un sottocanale con quel nome esatto e che sia attivo. Senza --channel-name, il server sceglie un account disponibile in base alla configurazione del canale.

Voglio usare il risultato in un altro programma

Usa --output json oppure --save-response result.json. Il programma può leggere il campo url per ottenere il link completo.

Il caricamento di archivi su Yandex fallisce

Yandex non supporta in modo affidabile i formati compressi; può dipendere dalle politiche della piattaforma. Se devi usare Yandex, preferisci file non compressi.

Released as user documentation for ImgHost.