Skip to content

Tải tệp lên bằng API Token

Tải lên bằng API Token dành cho tập lệnh, tác vụ tự động và chương trình của bên thứ ba. Bạn không cần mở giao diện web. Chỉ cần cung cấp URL trang, token, đường dẫn tệp cục bộ và một kênh tải lên thật, tệp có thể được tải lên ImgHost và phản hồi sẽ bao gồm URL của tệp.

Chỉnh sửa API Token

Trước khi bắt đầu

Mở bảng quản trị, rồi đi tới:

text
System Settings -> Security Settings -> API Token

Khi tạo hoặc chỉnh sửa API Token, hãy bảo đảm token có quyền tải lên và dùng một kênh tải lên mặc định thật. Tải lên bằng API Token không dùng lối vào Điều phối thông minh, và tập lệnh cũng nên truyền một kênh thật.

Tải tập lệnh tải lên

Gói tài liệu cung cấp hai tập lệnh Node.js:

Tập lệnhMục đích
tập lệnh tải lên một yêu cầuGọi /upload một lần. Hữu ích cho tệp nhỏ và kiểm tra kết nối.
tập lệnh tải lên theo phầnDùng chia phần bằng API Token, tải trực tiếp hoặc phiên tải lên của nền tảng. Khuyến nghị cho tệp lớn.

Yêu cầu Node.js 18 trở lên.

Liệt kê kênh có sẵn

Cả hai tập lệnh đều có thể liệt kê các kênh tải lên khả dụng với API Token hiện tại:

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

Khi liệt kê kênh, không cần --file--channel. Phản hồi bao gồm kênh tải lên mặc định, key kênh tải lên, tên kênh con và trạng thái cân bằng tải. Secret, token làm mới và các giá trị cấu hình nhạy cảm khác không được trả về.

Chọn chế độ tải lên

Chế độPhù hợp nhất choMô tả
Tải lên một yêu cầuTệp nhỏ, tập lệnh đơn giản, kiểm tra kết nốiGửi toàn bộ tệp tới /upload trong một yêu cầu.
Tải lên theo phầnTệp lớn hoặc tệp dễ hết thời gian chờTập lệnh chọn luồng chia phần, trực tiếp hoặc phiên tải lên theo kênh.

Với tệp lớn hơn, hãy dùng tập lệnh tải lên theo phần trước. Tải lên một yêu cầu bị giới hạn bởi dung lượng yêu cầu Cloudflare, bộ nhớ Worker và giới hạn riêng của từng nền tảng.

Tải lên một yêu cầu

Tập lệnh một yêu cầu gửi một yêu cầu tới /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"

Bạn cũng có thể đặt token trong biến môi trường:

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

Tham số tải lên một yêu cầu

Tham sốBắt buộcMô tả
--base-url <url>URL trang ImgHost, ví dụ https://image.ai6.me.
--token <token>API Token. Bạn cũng có thể dùng biến môi trường IMGHOST_API_TOKEN.
--file <path>Đường dẫn tệp cục bộ.
--channel <key>Kênh tải lên.
--folder <path>KhôngThư mục tải lên, ví dụ photos/2026 hoặc /user/.
--name-type <type>KhôngChế độ đặt tên, ánh xạ tới uploadNameType ở phần phụ trợ. Mặc định là default.
--channel-name <name>KhôngChọn kênh con/tài khoản. Nếu bỏ qua, cấu hình kênh ở phần phụ trợ sẽ quyết định.
--retries <n>KhôngSố lần thử lại khi lỗi tạm thời. Mặc định là 3.
--timeout-ms <n>KhôngThời gian chờ yêu cầu. Mặc định là 180000.
--output <pretty|json>KhôngĐịnh dạng đầu ra. Mặc định là pretty.
--save-response <path>KhôngLưu phản hồi JSON cuối cùng vào tệp.
--list-channelsKhôngLiệt kê các kênh khả dụng với token hiện tại rồi thoát.

Kênh tải lên một yêu cầu

Key kênhKênh
telegram / tgTelegram
discord / dcDiscord
cfr2 / r2Cloudflare R2
s3S3
webdav / wdKênh lưu trữ WebDAV
github / ghGitHub Releases
gitlab / glGitLab Packages
huggingface / hfHugging Face
onedrive / odOneDrive
googledrive / google / gdGoogle Drive
dropbox / dbDropbox
yandex / yxYandex Disk
pcloud / pdpCloud

Giới hạn dung lượng tải lên một yêu cầu

Khi có thể, hãy giữ tệp tải lên một yêu cầu dưới 100 MB.

Các kênh sau có ngưỡng chặn /upload một yêu cầu rõ ràng:

KênhGiới hạn một yêu cầu
Telegram20 MiB
Discord10 MiB
S364 MiB
WebDAV64 MiB
GitHub Releases64 MiB
GitLab Packages64 MiB

Khi tệp vượt một trong các giới hạn này, tập lệnh báo lỗi tương ứng ngay tại máy cục bộ. Các kênh khác không có kiểm tra cục bộ cứng 100 MB trong tập lệnh. Nếu thân yêu cầu vượt khả năng của Cloudflare hoặc nền tảng, Cloudflare hoặc nền tảng từ xa sẽ trả lỗi.

Tải lên theo phần

Tập lệnh tải lên theo phần trước tiên yêu cầu phần phụ trợ phân giải tệp đích, rồi đi theo luồng tệp lớn cho kênh đã chọn. Bạn không cần tự viết yêu cầu phiên chia phần, hợp nhất hoặc hoàn tất.

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

Tham số tải lên theo phần

Tham sốBắt buộcMô tả
--base-url <url>URL trang ImgHost.
--token <token>API Token. Bạn cũng có thể dùng biến môi trường IMGHOST_API_TOKEN.
--file <path>Đường dẫn tệp cục bộ.
--channel <key>Kênh tải lên.
--folder <path>KhôngThư mục tải lên.
--name-type <type>KhôngChế độ đặt tên, ánh xạ tới uploadNameType ở phần phụ trợ. Mặc định là default.
--channel-name <name>KhôngChọn kênh con/tài khoản. Nếu bỏ qua, cấu hình kênh ở phần phụ trợ sẽ quyết định.
--concurrency <n>KhôngSố lượt tải lên đồng thời. Mặc định là 1, tối đa 3.
--retries <n>KhôngSố lần thử lại khi lỗi tạm thời. Mặc định là 3.
--timeout-ms <n>KhôngThời gian chờ từng yêu cầu. Mặc định là 180000.
--output <pretty|json>KhôngĐịnh dạng đầu ra. Mặc định là pretty.
--save-response <path>KhôngLưu phản hồi JSON cuối cùng vào tệp.
--list-channelsKhôngLiệt kê các kênh khả dụng với token hiện tại rồi thoát.

Kênh tải lên theo phần

Key kênhLuồng tải lên
telegram / tgPhiên /upload chia phần thật
discord / dcPhiên /upload chia phần thật
cfr2 / r2Phiên /upload chia phần thật
github / ghPhiên /upload chia phần thật
gitlab / glPhiên /upload chia phần thật
webdav / wdPhiên /upload chia phần thật
s3S3 multipart upload
onedrive / odPhiên tải lên OneDrive
googledrive / google / gdTải lên tiếp tục được của Google Drive
dropbox / dbPhiên tải lên Dropbox
yandex / yxURL tải lên trực tiếp của Yandex
pcloud / pdLiên kết tải lên pCloud
huggingface / hfTải lên Hugging Face LFS

Các mẫu tệp nén của Yandex không ổn định khi thử nghiệm. Tệp không nén đã được xác minh là tải lên thành công.

Phản hồi tải lên

Sau khi tải lên thành công, tập lệnh in:

text
success
src: /file/photos/2026/example.png
url: https://your-domain/file/photos/2026/example.png
fileId: photos/2026/example.png
TrườngMô tả
srcĐường dẫn tệp nội bộ của trang.
urlURL công khai đầy đủ, phù hợp cho tập lệnh hoặc bản ghi cơ sở dữ liệu của bạn.
fileIdFile ID, hữu ích cho truy vấn, quản lý hoặc nhật ký sau này.
channelNameTập lệnh theo phần có thể trả về kênh con/tài khoản thực tế đã dùng.

Với --output json, tập lệnh in toàn bộ phản hồi JSON để chương trình sử dụng.

Gọi API một yêu cầu trực tiếp

Nếu không dùng tập lệnh, bạn có thể gọi trực tiếp điểm cuối tải lên một yêu cầu:

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

Trường biểu mẫu:

TrườngBắt buộcMô tả
fileTệp cần tải lên.

Tham số truy vấn:

Tham sốBắt buộcMô tả
uploadChannelKênh tải lên thật.
uploadFolderKhôngThư mục tải lên.
uploadNameTypeKhôngChế độ đặt tên.
channelNameKhôngChọn kênh con/tài khoản.

Phản hồi thành công có dạng:

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

Câu hỏi thường gặp

Tải lên một yêu cầu dung lượng lớn bị lỗi

/upload một yêu cầu gửi toàn bộ tệp trong một yêu cầu. Tệp lớn có thể bị Cloudflare hoặc nền tảng từ xa chặn. Dùng tập lệnh tải lên theo phần cho tệp lớn.

Đã đặt --channel-name nhưng tải lên vẫn lỗi

Kiểm tra xem kênh đã chọn có thật sự có kênh con với tên đó và kênh đó có đang bật không. Nếu bỏ qua --channel-name, phần phụ trợ chọn một tài khoản khả dụng theo cấu hình của kênh đó.

Tôi muốn dùng kết quả trong chương trình khác

Dùng --output json, hoặc thêm --save-response result.json. Đọc trường url để lấy URL tệp đầy đủ.

Yandex không thể tải tệp nén lên

Yandex không hỗ trợ định dạng lưu trữ nén. Điều này có thể do chính sách nền tảng của họ. Khi dùng Yandex, hãy tải tệp không phải dạng nén nếu có thể.

Released as user documentation for ImgHost.