Gli URL BLOB (riferimento W3C , nome ufficiale) o gli URL oggetto (riferimento MDN e nome metodo) vengono utilizzati con un oggetto BLOB o File .
src = "blob: https: //crap.crap " Ho aperto l'URL BLOB che era in SRC del video ha dato un errore e non riesco ad aprire ma stava lavorando con il tag SRC come è possibile?
Gli URL BLOB possono essere generati solo internamente dal browser. URL.createObjectURL()
creerà un riferimento speciale all'oggetto BLOB o File che in seguito può essere rilasciato usando URL.revokeObjectURL()
. Questi URL possono essere utilizzati solo localmente nella singola istanza del browser e nella stessa sessione (ovvero la durata della pagina / del documento).
Che cos'è l'URL BLOB?
Perché è usato?
URL BLOB / URL oggetto è uno pseudo protocollo che consente di utilizzare oggetti BLOB e file come origine URL per cose come immagini, collegamenti per il download di dati binari e così via.
Ad esempio, non è possibile consegnare un oggetto immagine dati byte grezzi in quanto non saprebbe cosa farsene. Ad esempio, richiede che le immagini (che sono dati binari) vengano caricate tramite URL. Questo vale per tutto ciò che richiede un URL come sorgente. Invece di caricare i dati binari, quindi servirli nuovamente tramite un URL, è meglio utilizzare un passaggio locale aggiuntivo per poter accedere ai dati direttamente senza passare attraverso un server.
È anche un'alternativa migliore a URI dati che sono stringhe codificate come Base-64 . Il problema con URI dati è che ogni carattere richiede due byte in JavaScript. Inoltre, viene aggiunto un 33% grazie alla codifica Base-64. I BLOB sono array di byte binari puri che non presentano alcun sovraccarico significativo come l'URI dei dati, il che li rende più veloci e più piccoli da gestire.
Posso creare il mio URL BLOB su un server?
No, gli URL BLOB / URL oggetto possono essere creati solo internamente nel browser. È possibile creare BLOB e ottenere l'oggetto File tramite l'API Lettore file, sebbene BLOB significhi solo OBject binario di grandi dimensioni e sia archiviato come array di byte. Un client può richiedere che i dati vengano inviati come ArrayBuffer o come BLOB. Il server dovrebbe inviare i dati come dati binari puri. Spesso i database usano Blob per descrivere anche oggetti binari, e in sostanza stiamo parlando sostanzialmente di array di byte.
se hai ulteriori dettagli
È necessario incapsulare i dati binari come oggetto BLOB, quindi utilizzare URL.createObjectURL()
per generare un URL locale per esso:
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
Si noti che URL
può essere aggiunto un prefisso nei browser webkit, quindi utilizzare:
var url = (URL || webkitURL).createObjectURL(...);