Tôi đang viết một phần mở rộng chrome mà làm như sau:"Aw, Snap" khi dữ liệu uri là quá lớn
- Số lượt tải một tập tin từ một trang web vào bộ nhớ sử dụng
XMLHttpRequest
- Thêm dữ liệu bổ sung cho tệp và sau đó base64 mã hóa kết quả thành biến số
total_encoded_data
- Cung cấp dữ liệu cho người dùng bằng cách sử dụng
<a href=data:application/octet-stream;charset=utf-8;base64,' + total_encoded_data+' download='file.bin'>Click to Download</a>
. Trường hợptotal_encoded_data
được thêm vào href bằng cách sử dụng jQuery.
Tôi đã tìm thấy, thông qua tìm kiếm nhị phân thủ công, nếu kích thước total_encoded_data
lớn hơn 2097100 ký tự thì tôi sẽ nhận được thông báo Aw, Snap khi tôi nhấp vào liên kết. Nếu kích thước nhỏ hơn thì tôi có thể tải xuống như mong đợi.
Ngoài việc kiểm tra kích thước, tôi cũng sử dụng atoi
để đảm bảo rằng mã hóa base64 hợp lệ và hoạt động không có lỗi.
Các Aw, các thông điệp Snap không sản xuất bất kỳ báo cáo sự cố trong chrome://crashes
hay bất kỳ đầu ra bất ngờ trong chrome_debug.log
Làm thế nào để tránh một thông báo Aw, Snap khi phục vụ một uri dữ liệu mà mã hóa base64 dài chuỗi là lớn hơn 2097100?
3,5 năm sau ... vẫn chưa được khắc phục. Chúa ơi, Chrome. – kangax
Gần 7 năm sau ... và giải quyết cùng một vấn đề cũ với mẹo url blob! – aBertrand
Hầu như tám .. Đó là buồn .. –