Je rencontre des problèmes avec le stockage de blobs dans IndexedDB sur Safari version 10.1.2 (également confronté au même problème sur IOS). J'utilise l'enveloppe du module angular2-indexeddb, cependant - je ne pense pas que ce soit un problème avec le module en tant que tel. Mon code fonctionne bien dans Chrome, mais lorsque l'on tente de mettre un objet blob dans le Safari IndexedDB, le dossier affiche toujours comme « nul » (voir le champ FileData):Impossible de stocker les types de Blob dans IndexedDB sur Safari
J'ai essayé une variété de différents fichiers blob (audio, vidéo, html) et ils affichent toujours comme 'null'. Aucune erreur (visible) n'est renvoyée par IndexedDb lors de l'insertion de cet enregistrement. D'après ce que j'ai lu - les blobs devraient être supportés dans Safari. Je pense que le problème pourrait être associé à la façon dont le blob est créé? Peut-être que Safari n'aime pas les données BLOB?
est Ci-dessous un échantillon de mon code (je ne l'ai pas inclus trop ici, alors s'il vous plaît laissez-moi savoir si plus d'information est nécessaire):
// 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);
});
comme une note de côté - je peux stocker ces données comme un ArrayBuffer dans Safari IndexedDB sans aucun problème. Le problème est que je dois alors le convertir en un blob lorsque je le récupère de la base de données (la puissance de traitement supplémentaire requise n'est pas idéale).
Toute aide est très appréciée.
La dernière fois que j'ai vérifié Safari ne supportait pas les blobs – Josh
Eh bien, ils sont. Je suis capable de créer des blobs, les afficher en tant que vidéo - mais ne pas les enregistrer dans un IndexedDB. Un peu étrange. – Alex
Désolé. Je voulais dire que l'implémentation d'indexeddb dans safaris ne supporte pas l'écriture ou la lecture de blobs – Josh