Blob URL ( W3C 참조 , 공식 이름) 또는 Object-URL ( MDN 및 메소드 이름 참조)은 Blob 또는 File 객체 와 함께 사용됩니다 .
src = "blob : https : //crap.crap "비디오의 src에있는 BLOB URL을 열면 오류가 발생하여 열 수는 없지만 src 태그를 사용하는 방법은 무엇입니까?
Blob URL은 브라우저에서 내부적으로 만 생성 할 수 있습니다. URL.createObjectURL()
Blob 또는 File 객체에 대한 특수 참조를 생성하고 나중에이를 사용하여 해제 할 수 있습니다 URL.revokeObjectURL()
. 이러한 URL은 브라우저의 단일 인스턴스 및 동일한 세션 (예 : 페이지 / 문서 수명)에서 로컬로만 사용할 수 있습니다.
얼룩 URL이란 무엇입니까?
왜 사용됩니까?
Blob URL / Object URL은 Blob 및 File 객체를 이미지, 바이너리 데이터의 다운로드 링크 등과 같은 URL 소스로 사용할 수있는 의사 프로토콜입니다.
예를 들어 Image 객체는 원시 바이트 데이터를 처리 할 수 없습니다. 예를 들어 URL을 통해 이미지 (이진 데이터)를로드해야합니다. 소스로 URL이 필요한 모든 항목에 적용됩니다. 이진 데이터를 업로드 한 다음 URL을 통해 다시 제공하는 대신 서버를 통하지 않고 직접 데이터에 액세스 할 수 있도록 추가 로컬 단계를 사용하는 것이 좋습니다.
또한 Base-64 로 인코딩 된 문자열 인 Data-URI에 대한 더 나은 대안 입니다. Data-URI의 문제점은 각 문자가 JavaScript에서 2 바이트를 사용한다는 것입니다. 또한 Base-64 인코딩으로 인해 33 %가 추가되었습니다. Blob은 순수 이진 바이트 배열로, Data-URI와 달리 오버 헤드가 크지 않으므로 처리 속도가 빨라집니다.
서버에서 자체 Blob URL을 만들 수 있습니까?
아니요. Blob URL / 개체 URL은 브라우저에서 내부적으로 만 만들 수 있습니다. BLOB은 이진 큰 객체를 의미하고 바이트 배열로 저장되지만 파일 판독기 API를 통해 Blob을 만들고 파일 객체를 가져올 수 있습니다. 클라이언트는 데이터를 ArrayBuffer 또는 Blob으로 보내도록 요청할 수 있습니다. 서버는 데이터를 순수 이진 데이터로 보내야합니다. 데이터베이스는 종종 이진 객체를 기술하기 위해 Blob을 사용하며, 본질적으로 우리는 기본적으로 바이트 배열에 대해 이야기하고 있습니다.
그런 다음 추가 세부 정보가 있으면
이진 데이터를 BLOB 객체로 캡슐화 한 다음이를 사용 URL.createObjectURL()
하여 로컬 URL을 생성해야합니다.
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
주 URL
사용하므로, 웹킷 브라우저에서 접두사 수 있습니다 :
var url = (URL || webkitURL).createObjectURL(...);