Safariバージョン10.1.2のIndexedDBにBLOBを格納する際に問題があります(これはIOSの同じ問題に直面しています)。SafariのIndexedDBにBlob型を格納できません
私はangular2-indexeddbモジュールラッパーを使用していますが、モジュール自体に問題はないと思います。私のコードは、Chromeで正常に動作サファリのIndexedDBのBlobオブジェクトを置くしようとしたときただし、レコードは常に「NULL」として表示されます(FILEDATAフィールドを参照してください):
私は別のさまざまなを試してみましたblobファイル(オーディオ、ビデオ、HTML)は常に 'null'として表示されます。このレコードを挿入するとき、IndexedDbから(可視の)エラーは返されません。
私が読んだことから、ブロブはSafariでサポートされるはずです。問題がBLOBの作成方法と関連していると思っていますか? SafariはBLOBデータが好きではないでしょうか? - 私はこのデータを保存することができますサイドノートとして
// create blob:
const aFileParts = ['<a id="a"><b id="b">foo!</b></a>'];
const oMyBlob = new Blob(aFileParts, {type : 'text/html'});
console.log('blob type' + oMyBlob.type); // outputs as 'text/html'
// initialize my indexeddb store:
return this.initializeStores().then(() => {
// add 'oMyBlob' to the FileData data store:
return this.db.add('FileData',
{ FileName: 'foo', FileData: oMyBlob, FileType: 'audio' }).then(() => {
// Success
console.log('added ' + 'foo' + ' to FileData store.');
// Get the file from the FileData store
return this.db.getByIndex('FileData', 'FileName', 'foo').then((record) => {
return Promise.resolve();
});
}, (error) => {
console.log(error);
this.handleError(error)
return Promise.reject(error);
});
}, (error) => {
this.handleError(error);
return Promise.reject(error);
});
:以下
は、(より多くの情報が必要な場合ので、私に知らせてください、私はあまりここに含まれていない)私のコードのサンプルですSafari IndexedDBのArrayBufferとして問題なく使用できます。問題は、dbから取得するときにこれをblobに変換する必要があることです(必要な余分な処理能力は理想的ではありません)。ご迷惑をおかけして申し訳ありません。
最後にSafariがブロブをサポートしていないことを確認しました – Josh
まあまあです。ブロブを作成してビデオとして表示できますが、IndexedDBには保存しません。奇妙なことだ。 – Alex
申し訳ありません。私は、indexeddbのsafaris実装がBLOBの書き込みや読み込みをサポートしていないと言っていたのですが、 – Josh