Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

Archiwum dla Lipiec 26th, 2012

Typ Blob w JavaScripcie

Autor: Piotr Karpiuk o 26. lipca 2012

Typ Blob reprezentuje nieprzetworzone, niemodyfikowalne dane binarne o ustalonej wielkości, z dodatkowym typem MIME. Nie ma dostępu do poszczególnych bajtów danych, ale za pomocą metody slice(startOffset, endOffset, mime) można utworzyć nowego bloba zawierającego fragment (póki co implementacje tej metody noszą nazwy webkitSlice i mozSlice w zależności od przeglądarki), np. po to aby przesłać na serwer plik kawałkami.

Konstruować bloba można składając wartości typów String, Blob i pochodnych ArrayBufferView (patrz post na temat TypedArray), dodatkowo określając typ MIME oraz – w przypadku łańcuchów – czy znaki końca wiersza mają być zamieniane na natywne dla systemu operacyjnego (np. \n dla UNIXów, \r\n dla Windows, domyślnie jeśli parametr nie zostanie podany znaki końca wiersza są pozostawiane bez zmian).

        var blob = new Blob([ myBlob1, myBlob2, 'jakiś łańcuch', myInt32Array], { type: 'image/jpeg', ending: 'native' });

Typ File dziedziczy po Blob i często oba typy można używać zamiennie. Bloba można odczytać/zapisać z serwera (AJAXem), lokalnie odczytać/zapisać w pliku lub bazie IndexedDB (patrz osobny post), ale także przetransformować w tzw. Blob URL.

Blob URL

Powiedzmy, że masz bloba, i chciałbyś jego zawartości użyć jako danych do obrazka/filmu/dźwięku (znaczniki img, video, audio) lub jako osobny dokument HTML (znacznik iframe), tzn. użyć jako wartości atrybutu src tych znaczników.

        img.src = window.URL.createObjectURL( myBlob );

Mało tego: możesz użyć bloba aby dynamicznie utworzyć wątek (Web Worker) nie dysponując plikiem JavaScriptu tego wątku:

Czytaj więcej »

Napisany w JavaScript | Brak komentarzy »