API Token से फ़ाइल अपलोड
API Token से फ़ाइल अपलोड करना स्क्रिप्ट, स्वचालन कार्यों और बाहरी प्रोग्रामों के लिए उपयुक्त है। ImgHost की वेब इंटरफ़ेस खोलने की ज़रूरत नहीं होती; साइट का पता, API Token, स्थानीय फ़ाइल का मार्ग और एक वास्तविक अपलोड चैनल देने पर फ़ाइल भेजी जा सकती है। सफल होने पर स्क्रिप्ट फ़ाइल का लिंक लौटाती है।

तैयारी
प्रशासन पैनल में खोलें:
text
System Settings -> Security Settings -> API TokenAPI Token बनाते या संपादित करते समय अपलोड की अनुमति चालू रखें और कोई वास्तविक डिफ़ॉल्ट अपलोड चैनल चुनें। API Token अपलोड में स्मार्ट वितरण का उपयोग नहीं होता, इसलिए स्क्रिप्ट में __smart__ न भेजें। s3, github, telegram जैसे वास्तविक चैनल कुंजी का उपयोग करें।
अपलोड स्क्रिप्ट डाउनलोड करें
ImgHost दस्तावेज़ में Node.js पर आधारित दो स्क्रिप्ट दी गई हैं:
| स्क्रिप्ट | उपयोग |
|---|---|
| एक अनुरोध वाली अपलोड स्क्रिप्ट | केवल एक बार /upload को बुलाती है; छोटी फ़ाइलों और इंटरफ़ेस जाँच के लिए उपयुक्त |
| खंडों में अपलोड करने वाली स्क्रिप्ट | चैनल के अनुसार खंडों में अपलोड, सीधा अपलोड या प्लेटफ़ॉर्म सत्र उपयोग करती है; बड़ी फ़ाइलों के लिए उपयुक्त |
स्क्रिप्ट चलाने के लिए स्थानीय मशीन पर Node.js 18 या उससे नया संस्करण चाहिए।
उपलब्ध चैनल देखें
दोनों स्क्रिप्ट वर्तमान 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इस मोड में --file और --channel देना आवश्यक नहीं है। परिणाम में डिफ़ॉल्ट अपलोड चैनल, मुख्य चैनल कुंजी, उप-चैनलों के नाम और भार संतुलन की स्थिति मिलती है। गुप्त कुंजियाँ, रीफ़्रेश टोकन या संवेदनशील सेटिंग्स वापस नहीं आतीं।
कौन सा अपलोड तरीका चुनें
| तरीका | कब उपयोग करें | व्यवहार |
|---|---|---|
| एक अनुरोध में अपलोड | छोटी फ़ाइल, सरल स्क्रिप्ट, इंटरफ़ेस जाँच | पूरी फ़ाइल एक अनुरोध में /upload पर भेजता है |
| खंडों में अपलोड | बड़ी फ़ाइल या समयसीमा पार कर सकने वाली फ़ाइल | चैनल के अनुसार खंड, सीधा अपलोड या प्लेटफ़ॉर्म सत्र उपयोग करता है |
फ़ाइल बड़ी हो तो पहले खंडों में अपलोड वाली स्क्रिप्ट उपयोग करें। एक अनुरोध में अपलोड Cloudflare के अनुरोध आकार, Worker स्मृति और गंतव्य प्लेटफ़ॉर्म की सीमाओं से प्रभावित हो सकता है।
एक अनुरोध में अपलोड
यह स्क्रिप्ट पूरी फ़ाइल को एक ही अनुरोध में /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"API Token को परिवेश चर में भी रखा जा सकता है:
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एक अनुरोध वाले अपलोड के पैरामीटर
| पैरामीटर | आवश्यक | विवरण |
|---|---|---|
--base-url <url> | हाँ | ImgHost साइट का पता, जैसे https://image.ai6.me |
--token <token> | हाँ | API Token; IMGHOST_API_TOKEN परिवेश चर भी उपयोग कर सकते हैं |
--file <path> | हाँ | स्थानीय फ़ाइल का मार्ग |
--channel <key> | हाँ | वास्तविक अपलोड चैनल |
--folder <path> | नहीं | अपलोड फ़ोल्डर, जैसे photos/2026 या /user/ |
--name-type <type> | नहीं | नामकरण तरीका; सर्वर के uploadNameType से मेल खाता है, डिफ़ॉल्ट default |
--channel-name <name> | नहीं | किसी खास उप-चैनल या खाते को चुनने के लिए; न देने पर सर्वर चैनल सेटिंग्स से चुनता है |
--retries <n> | नहीं | अस्थायी त्रुटि पर दोबारा प्रयासों की संख्या; डिफ़ॉल्ट 3 |
--timeout-ms <n> | नहीं | एक अनुरोध की समयसीमा, मिलीसेकंड में; डिफ़ॉल्ट 180000 |
--output <pretty|json> | नहीं | आउटपुट का रूप; डिफ़ॉल्ट pretty |
--save-response <path> | नहीं | अंतिम परिणाम JSON फ़ाइल में सहेजता है |
--list-channels | नहीं | केवल चैनल दिखाता है, फ़ाइल अपलोड नहीं करता |
चैनल कुंजियाँ
| चैनल कुंजी | चैनल |
|---|---|
telegram / tg | Telegram |
discord / dc | Discord |
cfr2 / r2 | Cloudflare R2 |
s3 | S3 |
webdav / wd | WebDAV संग्रहण चैनल |
github / gh | GitHub Releases |
gitlab / gl | GitLab Packages |
huggingface / hf | Hugging Face |
onedrive / od | OneDrive |
googledrive / google / gd | Google Drive |
dropbox / db | Dropbox |
yandex / yx | Yandex Disk |
pcloud / pd | pCloud |
एक अनुरोध वाले अपलोड की आकार सीमा
एक अनुरोध वाले अपलोड में फ़ाइल को 100 MB से कम रखना बेहतर है। नीचे दिए चैनलों पर स्क्रिप्ट स्थानीय सीमा लागू करती है:
| चैनल | सीमा |
|---|---|
| Telegram | 20 MiB |
| Discord | 10 MiB |
| S3 | 64 MiB |
| WebDAV | 64 MiB |
| GitHub Releases | 64 MiB |
| GitLab Packages | 64 MiB |
सीमा पार होने पर स्क्रिप्ट भेजने से पहले स्थानीय त्रुटि दिखाती है। अन्य चैनलों पर स्क्रिप्ट 100 MB की अलग स्थानीय सीमा नहीं लगाती; अनुरोध बहुत बड़ा हो तो त्रुटि Cloudflare या गंतव्य प्लेटफ़ॉर्म से आएगी।
खंडों में अपलोड
खंडों में अपलोड वाली स्क्रिप्ट पहले API Token से सर्वर से अपलोड लक्ष्य तय करवाती है, फिर चुने हुए चैनल का बड़ा फ़ाइल मार्ग उपयोग करती है। उपयोगकर्ता को स्वयं सत्र बनाना, खंड भेजना, जोड़ना या पूर्णता अनुरोध लिखना नहीं पड़ता।
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खंडों में अपलोड के पैरामीटर
| पैरामीटर | आवश्यक | विवरण |
|---|---|---|
--base-url <url> | हाँ | ImgHost साइट का पता |
--token <token> | हाँ | API Token; IMGHOST_API_TOKEN परिवेश चर भी उपयोग कर सकते हैं |
--file <path> | हाँ | स्थानीय फ़ाइल का मार्ग |
--channel <key> | हाँ | वास्तविक अपलोड चैनल |
--folder <path> | नहीं | अपलोड फ़ोल्डर |
--name-type <type> | नहीं | नामकरण तरीका; सर्वर के uploadNameType से मेल खाता है, डिफ़ॉल्ट default |
--channel-name <name> | नहीं | खास उप-चैनल या खाता |
--concurrency <n> | नहीं | एक साथ चलने वाले अपलोड की संख्या; डिफ़ॉल्ट 1, अधिकतम 3 |
--retries <n> | नहीं | अस्थायी त्रुटि पर दोबारा प्रयासों की संख्या; डिफ़ॉल्ट 3 |
--timeout-ms <n> | नहीं | हर अनुरोध की समयसीमा, मिलीसेकंड में; डिफ़ॉल्ट 180000 |
--output <pretty|json> | नहीं | आउटपुट का रूप; डिफ़ॉल्ट pretty |
--save-response <path> | नहीं | अंतिम परिणाम JSON फ़ाइल में सहेजता है |
--list-channels | नहीं | केवल चैनल दिखाता है, फ़ाइल अपलोड नहीं करता |
खंडों में अपलोड के मार्ग
| चैनल कुंजी | अपलोड मार्ग |
|---|---|
telegram / tg | /upload के माध्यम से वास्तविक खंड सत्र |
discord / dc | /upload के माध्यम से वास्तविक खंड सत्र |
cfr2 / r2 | /upload के माध्यम से वास्तविक खंड सत्र |
github / gh | /upload के माध्यम से वास्तविक खंड सत्र |
gitlab / gl | /upload के माध्यम से वास्तविक खंड सत्र |
webdav / wd | /upload के माध्यम से वास्तविक खंड सत्र |
s3 | S3 बहु-भाग अपलोड |
onedrive / od | OneDrive अपलोड सत्र |
googledrive / google / gd | Google Drive पुनरारंभ योग्य अपलोड |
dropbox / db | Dropbox अपलोड सत्र |
yandex / yx | Yandex सीधा अपलोड लिंक |
pcloud / pd | pCloud अपलोड लिंक |
huggingface / hf | Hugging Face LFS अपलोड |
परीक्षणों में Yandex पर आर्काइव या संपीड़ित फ़ाइलें भरोसेमंद नहीं रहीं। Yandex चैनल उपयोग करते समय गैर-आर्काइव फ़ाइल चुनें।
परिणाम
अपलोड सफल होने पर स्क्रिप्ट ऐसा परिणाम दिखाती है:
text
success
src: /file/photos/2026/example.png
url: https://your-domain/file/photos/2026/example.png
fileId: photos/2026/example.png| फ़ील्ड | विवरण |
|---|---|
src | साइट के भीतर फ़ाइल का मार्ग |
url | पूरा पहुँच लिंक, जिसे अपने स्क्रिप्ट या डेटाबेस में सीधे रखा जा सकता है |
fileId | फ़ाइल पहचान, जो बाद की खोज, प्रबंधन या लॉग के लिए उपयोगी है |
channelName | खंडों में अपलोड के समय वास्तविक उप-चैनल या खाते का नाम लौट सकता है |
--output json देने पर स्क्रिप्ट पूरा JSON दिखाती है, जिसे प्रोग्राम आसानी से पढ़ सकते हैं।
एक अनुरोध वाली API सीधे बुलाना
स्क्रिप्ट के बिना भी एक अनुरोध वाला अपलोड इंटरफ़ेस सीधे बुलाया जा सकता है:
text
POST https://your-domain/upload?uploadChannel=s3&uploadFolder=photos/2026&uploadNameType=default
Authorization: Bearer your API Token
Content-Type: multipart/form-dataफ़ॉर्म फ़ील्ड:
| फ़ील्ड | आवश्यक | विवरण |
|---|---|---|
file | हाँ | अपलोड की जाने वाली फ़ाइल |
क्वेरी पैरामीटर:
| पैरामीटर | आवश्यक | विवरण |
|---|---|---|
uploadChannel | हाँ | वास्तविक अपलोड चैनल |
uploadFolder | नहीं | अपलोड फ़ोल्डर |
uploadNameType | नहीं | नामकरण तरीका |
channelName | नहीं | खास उप-चैनल या खाता |
सफल होने पर इंटरफ़ेस ऐसा परिणाम लौटाता है:
json
{
"success": true,
"src": "/file/photos/2026/example.png",
"url": "https://your-domain/file/photos/2026/example.png",
"fileId": "photos/2026/example.png"
}सामान्य प्रश्न
बड़ी फ़ाइल एक अनुरोध में अपलोड नहीं होती
एक अनुरोध वाला /upload पूरी फ़ाइल एक साथ भेजता है। बड़ी फ़ाइल Cloudflare, Worker स्मृति या गंतव्य प्लेटफ़ॉर्म की सीमा से रुक सकती है। बड़ी फ़ाइलों के लिए खंडों में अपलोड वाली स्क्रिप्ट उपयोग करें।
--channel-name देने पर भी त्रुटि आती है
पहले जाँचें कि चुने हुए चैनल में ठीक उसी नाम का उप-चैनल मौजूद है और सक्रिय है। --channel-name न देने पर सर्वर चैनल सेटिंग्स के अनुसार उपलब्ध खाता चुनता है।
परिणाम किसी दूसरे प्रोग्राम में उपयोग करना है
--output json उपयोग करें या --save-response result.json दें। प्रोग्राम JSON में url फ़ील्ड पढ़कर पूरा फ़ाइल लिंक ले सकता है।
Yandex पर आर्काइव अपलोड विफल होता है
Yandex आर्काइव या संपीड़ित फ़ॉर्मैट को भरोसेमंद तरीके से समर्थन नहीं करता। यह प्लेटफ़ॉर्म नीति से जुड़ा हो सकता है। Yandex चैनल के लिए गैर-आर्काइव फ़ाइल उपयोग करें।