Skip to content

การอัปโหลดไฟล์ผ่าน API Token ​

การอัปโหลดผ่าน API Token เหมาะสำหรับสคริปต์ งานอัตโนมัติ และโปรแกรมของบุคคลที่สาม คุณไม่จำเป็นต้องเปิดเว็บ UI เพียงระบุ URL ของไซต์, token, เส้นทางไฟล์ในเครื่อง และช่องทางอัปโหลดจริง ก็สามารถอัปโหลดไฟล์ไปยัง ImgHost ได้ และผลตอบกลับจะมี URL ของไฟล์

แก้ไข API Token

ก่อนเริ่ม ​

เปิดแผงผู้ดูแลระบบ แล้วไปที่:

text
System Settings -> Security Settings -> API Token

เมื่อสร้างหรือแก้ไข API Token ให้ตรวจสอบว่ามีสิทธิ์อัปโหลดและใช้ช่องทางอัปโหลดเริ่มต้นที่เป็นช่องทางจริง การอัปโหลดผ่าน API Token จะไม่ใช้ทางเข้าการจัดส่งอัจฉริยะ และสคริปต์ก็ควรส่งช่องทางจริงด้วย

ดาวน์โหลดสคริปต์อัปโหลด ​

ชุดเอกสารมีสคริปต์ Node.js สองตัว:

สคริปต์วัตถุประสงค์
สคริปต์อัปโหลดแบบคำขอเดียวเรียก /upload หนึ่งครั้ง เหมาะสำหรับไฟล์ขนาดเล็กและการทดสอบการเชื่อมต่อ
สคริปต์อัปโหลดแบบแบ่งส่วนใช้การแบ่งส่วนผ่าน API Token, การอัปโหลดโดยตรง หรือเซสชันอัปโหลดของแพลตฟอร์ม แนะนำสำหรับไฟล์ขนาดใหญ่

ต้องใช้ 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 ผลตอบกลับจะมีช่องทางอัปโหลดเริ่มต้น, key ของช่องทางอัปโหลด, ชื่อช่องทางย่อย และสถานะการกระจายโหลด ความลับ token สำหรับรีเฟรช และค่าการตั้งค่าที่ละเอียดอ่อนอื่น ๆ จะไม่ถูกส่งกลับ

เลือกโหมดอัปโหลด ​

โหมดเหมาะสำหรับคำอธิบาย
อัปโหลดแบบคำขอเดียวไฟล์ขนาดเล็ก สคริปต์ง่าย ๆ การทดสอบการเชื่อมต่อส่งไฟล์ทั้งไฟล์ไปยัง /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"

คุณสามารถใส่ 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>ใช่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ไม่แสดงช่องทางที่ token ปัจจุบันใช้ได้ แล้วออก

ช่องทางแบบคำขอเดียว ​

key ช่องทางช่องทาง
telegram / tgTelegram
discord / dcDiscord
cfr2 / r2Cloudflare R2
s3S3
webdav / wdช่องทางจัดเก็บ WebDAV
github / ghGitHub Releases
gitlab / glGitLab Packages
huggingface / hfHugging Face
onedrive / odOneDrive
googledrive / google / gdGoogle Drive
dropbox / dbDropbox
yandex / yxYandex Disk
pcloud / pdpCloud

ขีดจำกัดขนาดแบบคำขอเดียว ​

หากเป็นไปได้ ให้ไฟล์แบบคำขอเดียวมีขนาดต่ำกว่า 100 MB

ช่องทางเหล่านี้มีเกณฑ์บล็อก /upload แบบคำขอเดียวในสคริปต์:

ช่องทางขีดจำกัดแบบคำขอเดียว
Telegram20 MiB
Discord10 MiB
S364 MiB
WebDAV64 MiB
GitHub Releases64 MiB
GitLab Packages64 MiB

เมื่อไฟล์เกินขีดจำกัดใดขีดจำกัดหนึ่ง สคริปต์จะแจ้งข้อผิดพลาดที่ตรงกันในเครื่อง ช่องทางอื่นไม่มีการตรวจสอบ 100 MB แบบตายตัวในสคริปต์ หากเนื้อหาคำขอเกินความสามารถของ Cloudflare หรือแพลตฟอร์ม Cloudflare หรือแพลตฟอร์มระยะไกลจะส่งคืนข้อผิดพลาด

อัปโหลดแบบแบ่งส่วน ​

สคริปต์อัปโหลดแบบแบ่งส่วนจะขอให้ฝั่งเซิร์ฟเวอร์ระบุไฟล์เป้าหมายก่อน จากนั้นจึงทำตามขั้นตอนไฟล์ขนาดใหญ่ของช่องทางที่เลือก คุณไม่จำเป็นต้องเขียนคำขอสร้างเซสชันส่วนย่อย รวมส่วน หรือเสร็จสิ้นเอง

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>ใช่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ไม่แสดงช่องทางที่ token ปัจจุบันใช้ได้ แล้วออก

ช่องทางแบบแบ่งส่วน ​

key ช่องทางขั้นตอนอัปโหลด
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 / yxURL อัปโหลดโดยตรงของ Yandex
pcloud / pdลิงก์อัปโหลด pCloud
huggingface / hfการอัปโหลด Hugging Face LFS

ตัวอย่างไฟล์บีบอัดของ Yandex ไม่เสถียรในการทดสอบ ยืนยันแล้วว่าไฟล์ที่ไม่บีบอัดอัปโหลดได้สำเร็จ

ผลตอบกลับหลังอัปโหลด ​

หลังจากอัปโหลดสำเร็จ สคริปต์จะแสดง:

text
success
src: /file/photos/2026/example.png
url: https://your-domain/file/photos/2026/example.png
fileId: photos/2026/example.png
ฟิลด์คำอธิบาย
srcเส้นทางไฟล์ภายในไซต์
urlURL สาธารณะแบบเต็ม เหมาะสำหรับสคริปต์ของคุณหรือบันทึกฐานข้อมูล
fileIdID ไฟล์ มีประโยชน์สำหรับการค้นหา การจัดการ หรือบันทึกภายหลัง
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"
}

FAQ ​

การอัปโหลดไฟล์ใหญ่แบบคำขอเดียวล้มเหลว ​

/upload แบบคำขอเดียวส่งไฟล์ทั้งไฟล์ในคำขอเดียว ไฟล์ขนาดใหญ่อาจถูก Cloudflare หรือแพลตฟอร์มระยะไกลบล็อก ใช้สคริปต์อัปโหลดแบบแบ่งส่วนสำหรับไฟล์ขนาดใหญ่

ตั้งค่า --channel-name แล้ว แต่อัปโหลดยังล้มเหลว ​

ตรวจสอบว่าช่องทางที่เลือกมีช่องทางย่อยชื่อนั้นจริงและเปิดใช้อยู่ หากไม่ระบุ --channel-name ฝั่งเซิร์ฟเวอร์จะเลือกบัญชีที่ใช้ได้ตามการตั้งค่าของช่องทางนั้น

ต้องการใช้ผลลัพธ์ในโปรแกรมอื่น ​

ใช้ --output json หรือเพิ่ม --save-response result.json อ่านฟิลด์ url เพื่อรับ URL ไฟล์แบบเต็ม

Yandex อัปโหลดไฟล์บีบอัดไม่ได้ ​

Yandex ไม่รองรับรูปแบบไฟล์บีบอัด อาจเกิดจากนโยบายของแพลตฟอร์ม เมื่อใช้ Yandex ให้พยายามอัปโหลดไฟล์ที่ไม่ใช่ไฟล์บีบอัด

Released as user documentation for ImgHost.