URL Blob (ref W3C , tên chính thức) hoặc URL đối tượng (ref. MDN và tên phương thức) được sử dụng với đối tượng Blob hoặc File .
src = "blob: https: //crap.crap " Tôi đã mở url blob trong src của video, nó bị lỗi và tôi không thể mở nhưng làm việc với thẻ src thì sao?
URL Blob chỉ có thể được tạo bởi nội bộ trình duyệt. URL.createObjectURL()
sẽ tạo một tham chiếu đặc biệt đến đối tượng Blob hoặc File mà sau này có thể được phát hành bằng cách sử dụng URL.revokeObjectURL()
. Các URL này chỉ có thể được sử dụng cục bộ trong một phiên bản duy nhất của trình duyệt và trong cùng một phiên (tức là tuổi thọ của trang / tài liệu).
Url blob là gì?
Tại sao nó được sử dụng?
URL / URL đối tượng Blob là một giao thức giả để cho phép các đối tượng Blob và File được sử dụng làm nguồn URL cho những thứ như hình ảnh, liên kết tải xuống cho dữ liệu nhị phân, v.v.
Ví dụ, bạn không thể xử lý dữ liệu byte thô của đối tượng hình ảnh vì nó sẽ không biết phải làm gì với nó. Nó đòi hỏi hình ảnh ví dụ (là dữ liệu nhị phân) phải được tải qua URL. Điều này áp dụng cho bất cứ điều gì yêu cầu URL là nguồn. Thay vì tải lên dữ liệu nhị phân, sau đó phân phát lại thông qua URL, tốt hơn là sử dụng một bước cục bộ bổ sung để có thể truy cập dữ liệu trực tiếp mà không cần thông qua máy chủ.
Nó cũng là một thay thế tốt hơn cho Data-URI, các chuỗi được mã hóa thành Base-64 . Vấn đề với Data-URI là mỗi char lấy hai byte trong JavaScript. Trên hết, 33% được thêm vào do mã hóa Base-64. Blobs là các mảng byte nhị phân thuần túy, không có bất kỳ chi phí đáng kể nào như Data-URI, điều này làm cho chúng nhanh hơn và nhỏ hơn để xử lý.
Tôi có thể tạo url blob của riêng mình trên máy chủ không?
Không, URL Blob / URL đối tượng chỉ có thể được tạo nội bộ trong trình duyệt. Bạn có thể tạo Blobs và nhận đối tượng Tệp thông qua API Trình đọc tệp, mặc dù BLOB chỉ có nghĩa là Đối tượng lớn nhị phân và được lưu trữ dưới dạng mảng byte. Một khách hàng có thể yêu cầu dữ liệu được gửi dưới dạng ArrayBuffer hoặc Blob. Máy chủ sẽ gửi dữ liệu dưới dạng dữ liệu nhị phân thuần túy. Cơ sở dữ liệu thường sử dụng Blob để mô tả các đối tượng nhị phân, và về bản chất chúng ta đang nói về cơ bản các mảng byte.
nếu bạn có thì chi tiết bổ sung
Bạn cần đóng gói dữ liệu nhị phân dưới dạng đối tượng BLOB, sau đó sử dụng URL.createObjectURL()
để tạo URL cục bộ cho nó:
var blob = new Blob([arrayBufferWithPNG], {type: "image/png"}),
url = URL.createObjectURL(blob),
img = new Image();
img.onload = function() {
URL.revokeObjectURL(this.src); // clean-up memory
document.body.appendChild(this); // add image to DOM
}
img.src = url; // can now "stream" the bytes
Lưu ý rằng URL
có thể có tiền tố trong trình duyệt webkit, vì vậy hãy sử dụng:
var url = (URL || webkitURL).createObjectURL(...);