Safari 버전 10.1.2의 IndexedDB에 BLOB를 저장하는 데 문제가 있습니다 (IOS에서도 동일한 문제가 있음).Safari의 IndexedDB에 Blob 유형을 저장할 수 없습니다.
나는 angular2-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);
});
: 아래
(자세한 정보가 필요하면 그렇게 알려 주시기 바랍니다, 내가 너무 여기에 포함되지 않은) 내 코드의 샘플입니다 사파리 IndexedDB의 ArrayBuffer로 문제없이. 문제는 내가 DB에서 검색 할 때 blob로 다시 변환해야한다는 것입니다 (필요한 추가 처리 능력은 이상적이지 않습니다).도움을 주시면 감사하겠습니다.
지난 번 Safari에서 얼룩이 지워지지 않았는지 확인했습니다. – Josh
그렇습니다. blob을 만들고 비디오로 표시 할 수 있지만 IndexedDB에 저장하지는 않습니다. 이상한. – Alex
죄송합니다. 나는 사파리의 indexeddb 구현이 블롭 (blob)의 작성이나 읽기를 지원하지 않는다고 말하고자했습니다 – Josh