9

blobAJAX 経由で取得したデータ (favicon)を に保存しようとしていlocalStorageます。

コード :

var xhr = new XMLHttpRequest();
xhr.open('GET', 
'http://g.etfv.co/http://www.google.com',
true);
xhr.responseType = "blob";
xhr.onload = function(e){ //Stringify blob...
    localStorage['icon'] = JSON.stringify(xhr.response);
    //reload the icon from storage
    var fr = new FileReader();
    fr.onload = 
        function(e) {
            document.getElementById("myicon").src = fr.result;
        }
    fr.readAsDataURL(JSON.parse(localStorage['icon']));
    }
xhr.send(null);

このコードは、で動作するように若干の変更を加えて、ここlocalStorageから適用されます。localStorage はすべてのデータを文字列として保存するため、BLOBは保存する前に何らかの方法で文字列化する必要があります。

JSONサポートされている型の 1 つとして blob を処理しないため、このコードが失敗しても驚くことではありません。

blob を localStorage に入れる方法はありますか?

4

1 に答える 1

12

BLOB をデータ uri としてローカル ストレージに保存するだけです。

var xhr = new XMLHttpRequest();
xhr.open('GET', 
'http://g.etfv.co/http://www.google.com',
true);
xhr.responseType = "blob";
xhr.onload = function(e){ //Stringify blob...
    //reload the icon from storage
    var fr = new FileReader();
    fr.onload = 
        function(e) {
            localStorage['icon'] = e.target.result;
            document.getElementById("myicon").src = localStorage['icon'];
        }
    fr.readAsDataURL(xhr.response);
}
xhr.send(null);
于 2014-01-09T01:07:20.700 に答える