Nén & giải nén ZIP, tar.gz API

Liệt kê, giải nén và tạo file ZIP, tar, tar.gz (.tgz), .gz qua HTTP, có chống zip bomb và đường dẫn ../ nguy hiểm.

POSThttps://apibox.io.vn/v1/archive

action=list (mặc định khi tải file lên) trả về mọi mục với tên, kích thước, kích thước nén, ngày, CRC-32, phương thức nén và cờ cho thư mục, mục bị mã hoá và tên unsafe (đường dẫn tuyệt đối hoặc ..). Tên trong ZIP không có cờ UTF-8 được đọc là UTF-8 nếu hợp lệ, nếu không thì CP437 (đặt name_encoding, ví dụ windows-1258, cho file nén bằng công cụ Windows cũ). Hỗ trợ ZIP64, tar (ustar, pax và tên dài GNU), tar.gz và .gz một file.

action=extract với entry trả về một file dạng base64 (kèm text cho file UTF-8 nhỏ) hoặc file gốc khi output=raw. action=extract_all trả về mọi file dạng JSON base64 (tối đa 20 MB) hoặc đóng gói lại thành ZIP khi output=zip; mục không an toàn và mục mã hoá được bỏ qua và liệt kê.

action=create tạo file format zip (mặc định), tar, tar.gz hoặc gz từ các file multipart (file1, file2…) hoặc files: [{"name": "a.txt", "content_base64": "…"}] (hoặc content dạng văn bản), mức nén level 0-9. Chống zip bomb: giới hạn tổng dung lượng giải nén (200 MB với gói Pro), tỉ lệ nén 1000:1, 10.000 mục; dung lượng đầu ra được kiểm tra ngay khi giải nén. Không hỗ trợ ZIP có mật khẩu (mã hoá), 7z, RAR, bzip2 và xz.

Tham số

TênVị tríKiểuBắt buộcMặc định
actionbody|querystringkhônglistlist, extract, extract_all hoặc create.
filebodyfilekhôngFile nén cần đọc (ZIP, tar, tar.gz / tgz, gz) qua multipart, body thô hoặc file_base64.
entrybody|querystringkhôngTên mục cần lấy với extract.
outputbody|querystringkhôngjsonextract: json hoặc raw; extract_all: json hoặc zip; create: file (mặc định) hoặc base64.
filesbodyarraykhôngVới create: [{"name": "thu-muc/a.txt", "content_base64": "…"}] hoặc content dạng văn bản; file multipart cũng được.
formatbody|querystringkhôngzipVới create: zip, tar, tar.gz hoặc gz.
levelbody|querynumberkhông6Mức nén 0-9 khi create.
name_encodingbody|querystringkhôngautoBảng mã tên trong ZIP: auto, utf-8, cp437, windows-1258…
filenamebody|querystringkhôngarchiveTên file tải về khi create.

Ví dụ

curl -X POST "https://apibox.io.vn/v1/archive" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@./my-file"

Kết quả trả về

{
  "format": "zip",
  "entries": 4,
  "files": 3,
  "directories": 1,
  "total_bytes": 300021,
  "compressed_bytes": 300071,
  "ratio": 1,
  "encrypted": false,
  "zip_bomb_suspected": false,
  "warnings": [],
  "truncated": false,
  "list": [
    {
      "name": "hoa-don.xml",
      "dir": false,
      "size": 15,
      "compressed": 15,
      "method": "stored",
      "date": "2026-11-11T13:46:06",
      "crc32": "b3e05eec",
      "encrypted": false,
      "unsafe": false
    },
    {
      "name": "sub/",
      "dir": true,
      "size": 0,
      "compressed": 0,
      "method": "stored",
      "date": "2026-11-11T13:46:06",
      "crc32": "00000000",
      "encrypted": false,
      "unsafe": false
    },
    {
      "name": "sub/rand.bin",
      "dir": false,
      "size": 300000,
      "compressed": 300050,
      "method": "deflate",
      "date": "2026-11-11T13:46:06",
      "crc32": "85582e2a",
      "encrypted": false,
      "unsafe": false
    },
    "…"
  ]
}

Ứng dụng

  • Giải nén file ZIP chứa XML hoá đơn điện tử nhà cung cấp gửi trong luồng tự động hoá
  • Cho Apps Script hoặc công cụ no-code đọc file bên trong ZIP, tar.gz
  • Gộp các báo cáo đã tạo thành một file ZIP để tải về
  • Kiểm tra file nén tải lên có zip bomb hoặc đường dẫn ../ trước khi xử lý

Hỏi đáp

Có mở được file ZIP có mật khẩu không?

Không. Mục bị mã hoá được liệt kê với encrypted: true nhưng không giải nén được; không hỗ trợ mã hoá ZIP (ZipCrypto hoặc AES).

Zip bomb được xử lý thế nào?

File khai báo vượt giới hạn tổng dung lượng hoặc tỉ lệ nén trên 1000:1 bị từ chối, và mỗi mục được giải nén với giới hạn đầu ra cứng, nên khai báo kích thước sai cũng không vượt được.

Tên file tiếng Việt bị lỗi font, làm sao?

File nén bằng công cụ Windows cũ lưu tên theo bảng mã cục bộ, không có cờ UTF-8. Thử name_encoding=windows-1258 hoặc cp437 để đọc đúng.

API liên quan

Bắt đầu với 1.000 request miễn phí mỗi tháng. Nhận API key miễn phí →