Blob-URLs (Ref. W3C , offizieller Name) oder Objekt-URLs (Ref. MDN und Methodenname) werden mit einem Blob- oder einem Dateiobjekt verwendet .
src = " blob : https: //crap.crap " Ich habe die Blob-URL geöffnet, die sich in src des Videos befand. Es gab einen Fehler und ich kann sie nicht öffnen, aber habe ich mit dem src-Tag gearbeitet, wie ist das möglich?
Blob-URLs können nur intern vom Browser generiert werden. URL.createObjectURL()
erstellt einen speziellen Verweis auf das Blob- oder File-Objekt, der später mit freigegeben werden kann URL.revokeObjectURL()
. Diese URLs können nur lokal in der einzelnen Instanz des Browsers und in derselben Sitzung verwendet werden (dh die Lebensdauer der Seite / des Dokuments).
Was ist eine Blob-URL?
Warum wird es verwendet?
Blob-URL / Objekt-URL ist ein Pseudoprotokoll, mit dem Blob- und Dateiobjekte als URL-Quelle für Bilder, Download-Links für Binärdaten usw. verwendet werden können.
Beispielsweise können Sie einem Bildobjekt keine Rohbyte-Daten übergeben, da es nicht wissen würde, was damit zu tun ist. Beispielsweise müssen Bilder (Binärdaten) über URLs geladen werden. Dies gilt für alles, für das eine URL als Quelle erforderlich ist. Anstatt die Binärdaten hochzuladen und dann über eine URL zurückzusenden, ist es besser, einen zusätzlichen lokalen Schritt zu verwenden, um direkt auf die Daten zugreifen zu können, ohne über einen Server zu gehen.
Es ist auch eine bessere Alternative zu Daten-URI, bei denen es sich um als Base-64 codierte Zeichenfolgen handelt . Das Problem mit dem Daten-URI besteht darin, dass jedes Zeichen in JavaScript zwei Bytes benötigt. Darüber hinaus werden aufgrund der Base-64-Codierung 33% hinzugefügt. Blobs sind reine binäre Byte-Arrays, die keinen signifikanten Overhead haben wie Data-URI, wodurch sie schneller und kleiner zu handhaben sind.
Kann ich meine eigene Blob-URL auf einem Server erstellen?
Nein, Blob-URLs / Objekt-URLs können nur intern im Browser erstellt werden. Sie können Blobs erstellen und File-Objekte über die File Reader-API abrufen, obwohl BLOB nur Binary Large OBject bedeutet und als Byte-Arrays gespeichert wird. Ein Client kann anfordern, dass die Daten entweder als ArrayBuffer oder als Blob gesendet werden. Der Server sollte die Daten als reine Binärdaten senden. Datenbanken verwenden häufig Blob, um auch binäre Objekte zu beschreiben, und im Wesentlichen handelt es sich im Wesentlichen um Byte-Arrays.
Wenn Sie dann zusätzliche Details haben
Sie müssen die Binärdaten als BLOB-Objekt kapseln und dann URL.createObjectURL()
eine lokale URL dafür generieren:
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
Beachten Sie, dass URL
in Webkit-Browsern möglicherweise ein Präfix vorangestellt ist. Verwenden Sie daher:
var url = (URL || webkitURL).createObjectURL(...);