Ich habe viele Probleme mit der Blob-URL.
Ich habe src
auf YouTube nach einem Video-Tag gesucht und festgestellt, dass das Video src
wie folgt aussieht:
src="blob:https://crap.crap"
Ich habe die Blob-URL src
des Videos geöffnet, in dem ein Fehler aufgetreten ist. Ich kann den Link nicht öffnen, aber er hat mit dem src
Tag funktioniert . Wie ist das möglich?
Bedarf:
- Was ist eine Blob-URL?
- Warum wird es verwendet?
- Kann ich meine eigene Blob-URL auf einem Server erstellen?
- Wenn Sie weitere Details haben
html5-video
bloburls
Waqas Tahir
quelle
quelle
Antworten:
Blob-URLs (Ref. W3C , offizieller Name) oder Objekt-URLs (Ref. MDN und Methodenname) werden mit einem Blob- oder einem Dateiobjekt verwendet .
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 kannURL.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).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.
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.
Sie müssen die Binärdaten als BLOB-Objekt kapseln und dann
URL.createObjectURL()
eine lokale URL dafür generieren:Beachten Sie, dass
URL
in Webkit-Browsern möglicherweise ein Präfix vorangestellt ist. Verwenden Sie daher:quelle
Diese Javascript-Funktion soll den Unterschied zwischen der Blob- Datei-API und der Daten- API zum Herunterladen einer JSON- Datei im Client-Browser anzeigen:
Die Funktion heißt wie
saveAsFile('out.json', jsonString);
. Es wird ein ByteStream erstellt, der vom Browser sofort erkannt wird und der die generierte Datei direkt über die Datei-API herunterlädtURL.createObjectURL
.In der
else
ist es möglich, dasselbe Ergebnis zu sehen, das über dashref
Element plus die Daten-API erhalten wurde, aber dies hat einige Einschränkungen, die die Blob-API nicht hat.quelle
Was ist eine Blob-URL? Warum wird es verwendet?
BLOB ist nur eine Bytesequenz. Der Browser erkennt es als Byte-Stream. Es wird verwendet, um den Byte-Stream von der Quelle abzurufen.
Kann ich meine eigene Blob-URL auf einem Server erstellen?
Ja, es gibt verschiedene Möglichkeiten, dies zu tun. Versuchen Sie beispielsweise http://php.net/manual/en/function.ibase-blob-echo.php
Lesen Sie mehr darüber
quelle
Ich habe die Arbeitslösung geändert, um sowohl den Fall als auch das Hochladen von Videos und das Hochladen von Bildern zu behandeln. Ich hoffe, es wird einigen helfen.
HTML
Javascript
jsFiddle Url
https://jsfiddle.net/PratapDessai/0sp3b159/
quelle