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.
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ên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
action | body|query | string | không | list | list, extract, extract_all hoặc create. |
file | body | file | không | File nén cần đọc (ZIP, tar, tar.gz / tgz, gz) qua multipart, body thô hoặc file_base64. | |
entry | body|query | string | không | Tên mục cần lấy với extract. | |
output | body|query | string | không | json | extract: json hoặc raw; extract_all: json hoặc zip; create: file (mặc định) hoặc base64. |
files | body | array | không | Với create: [{"name": "thu-muc/a.txt", "content_base64": "…"}] hoặc content dạng văn bản; file multipart cũng được. | |
format | body|query | string | không | zip | Với create: zip, tar, tar.gz hoặc gz. |
level | body|query | number | không | 6 | Mức nén 0-9 khi create. |
name_encoding | body|query | string | không | auto | Bảng mã tên trong ZIP: auto, utf-8, cp437, windows-1258… |
filename | body|query | string | không | archive | Tê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"const form = new FormData();
form.append('file', fileInput.files[0]);
const res = await fetch('https://apibox.io.vn/v1/archive', {
method: 'POST',
headers: { Authorization: 'Bearer YOUR_API_KEY' },
body: form,
});
console.log(await res.json());import requests
res = requests.post(
"https://apibox.io.vn/v1/archive",
headers={"Authorization": "Bearer YOUR_API_KEY"},
files={"file": open("my-file", "rb")},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/archive');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
CURLOPT_POSTFIELDS => ['file' => new CURLFile('my-file')],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));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
Metadata ảnh & EXIF
Đọc kích thước, định dạng, thông tin EXIF máy ảnh, thông số chụp và vị trí GPS của ảnh JPEG, PNG, WebP, HEIC, AVIF, GIF… – upload file hoặc qua URL.
PDFMetadata PDF
Đọc metadata file PDF: số trang, tiêu đề, tác giả, phần mềm tạo, ngày tạo, phiên bản PDF, mã hoá, số trường form và khổ giấy từng trang (A4, Letter…).
PDF₫Tạo PDF báo giá, phiếu thu
Tạo PDF báo giá, phiếu thu, đơn đặt hàng, hoá đơn bán hàng gọn đẹp từ JSON: tiếng Việt chuẩn, thuế GTGT, số tiền bằng chữ và mã VietQR để thanh toán.