Phương thức Blob.slice() (cũng trên File) tạo một Blob mới chứa dữ liệu trong khoảng byte chỉ định của Blob gốc. Không sao chép dữ liệu (zero-copy), rất hiệu quả.
Cú pháp
var newBlob = blob.slice(start, end, contentType);
start: Byte bắt đầu (mặc định 0).end: Byte kết thúc (không bao gồm, mặc định blob.size).contentType: MIME type blob mới (mặc định kế thừa).
Ví dụ: Gửi dữ liệu nhị phân qua XHR
var xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.onload = function(event) { /* handle response */ };
// Tạo blob từ text (demo)
var blob = new Blob(['demo'], { type: 'text/plain' });
// Gửi toàn bộ hoặc một phần: blob.slice(0, 100)
xhr.send(blob);
Ứng dụng chính
- Chunked Upload: Chia file lớn thành nhiều part, upload song song/tiếp tục được.
- Streaming/Processing: Đọc/xử lý file lớn từng phần (video, audio, log).
- Client-side editing: Cắt ghép video/audio/image trước khi upload.
Lưu ý
slice()trả về Blob mới, không sửa đổi blob gốc.- Hỗ trợ tốt trên tất cả trình duyệt hiện đại (IE10+).
- Kết hợp
FileReader.readAsArrayBuffer()hoặcreadAsDataURL()để đọc nội dung slice.