2012-05-02 15 views
13

El W3 ha anunciado su intención de despreciar la BlobBuilder API en la preferencia por el nuevo Blob API.¿Cuál es la diferencia entre BlobBuilder y el nuevo constructor Blob?

Si ya estoy usando BlobBuilder en una aplicación JavaScript, ¿cómo puedo convertir a la utilización de esta nueva API Blob? El antiguo WebKitBlobBuilder todavía está disponible en el último WebKit (y Chrome Canary), pero pronto será eliminado. Antes de poder escribir algo como esto:

var bb = new BlobBuilder(); 
bb.append(arrayBuffer); 
var blob = bb.getBlob(mimeString); 

¿Cómo pudo ser reescrito para usar el nuevo constructor de la gota? Gracias.

+0

Este artículo tiene una buena explicación: http://updates.html5rocks.com/ 2012/06/Don-t-Build-Blobs-Construct-Them – neave

Respuesta

13

Pasar un ArrayBuffer al constructor Blob parece estar en desuso, por lo que:

var dataView = new DataView(arrayBuffer); 
var blob = new Blob([dataView], { type: mimeString }); 
+0

Esto me da un error no capturado: TYPE_MISMATCH_ERR: Excepción de archivo DOM 11 ¿Tiene un ejemplo de trabajo completo? –

+1

'var arrayBuffer = new ArrayBuffer (16); var mimeString = "text/plain"; var dataView = new DataView (arrayBuffer); var blob = new Blob ([dataView], {type: mimeString}); console.log (blob); ' –

2

Según lo que dicen las especificaciones, debería ser tan simple como esto. Solo verifica los ejemplos de la página que publicaste.

var blob = new Blob(arrayBuffer); 

[Constructor, Constructor((ArrayBuffer or Blob or DOMString)

+0

Ah gracias. También parece que Blob() toma un objeto Array simple, no un ArrayBuffer, al menos en Chrome. No estoy seguro de si así es como debería ser, pero de lo contrario, los errores de Chrome. – neave

1
var blob = new Blob([arrayBuffer], {type: mimeString}); 
+2

Esto ahora produce una advertencia: "Los valores de ArrayBuffer están en desuso en Blob Constructor. Use ArrayBufferView en su lugar". –

+2

'var blob = new Blob ([new Uint8Array (arrayBuffer)], {type: mimeString});' arreglará eso por ti. – ellisbben

Cuestiones relacionadas