2012-05-14 2 views
4

IndexedDB 로컬 저장소에 이미지 파일을 저장하는 데 문제가 있습니다. 파일 객체를 잡고 IndexedDB로 밀어 넣으려고 시도하지만 오류가 발생합니다. DOM Exception : DATA_CLONE_ERR (25)IndexedDB에 이미지 파일 저장

이 (아래) 보이는 파일 객체를 indexedDB에 저장하고 나중에 indexedDB에서 가져올 수있는 객체로 변환하려면 어떻게해야합니까?

attribute: 32 
contentType: "image/png" 
displayName: "image1" 
displayType: "PNG File" 
fileType: ".png" 
name:  "image1.png" 
path:  "C:\pictures\image1.png" 
+0

이 훌륭한 기사를보실 수 있습니까? http://hacks.mozilla.org/2012/02/storing-images-and-files-in-indexeddb/ 그리고 당신과 비슷한 점이 있는지 확인해주십시오. 성취하려고 노력한다. –

+0

훌륭한 기사이지만 이미지가 원격으로가 아니라 로컬로 저장되므로 사용자로부터 얼룩이 생기지 않습니다. 또는 blob을 얻지 만 파일 객체 내부에 - 나중에 사용할 수 있도록 파일을 추출해야합니다. – CLiown

답변

2

위의 목록에있는 키/값 쌍에 의해 생성되는 개체 리터럴과 모양이 다른 무언가가있을 수 있습니다. 나는 JSON.stringify을 통과 한 후에 객체를 보내어 그 의도와 일대일로 일치하는지 확인하는 것이 좋습니다.

IndexedDB는 HTML5 structured clone algorithm을 사용하여 개체를 개체 저장소에 복사합니다. the spec에 따르면 오류 및 함수 개체를 복제하여 DATA_CLONE_ERR을 던질 수 없으므로 가능한 설명으로 살펴보십시오.

2

는 또한 크롬 (적어도 버전 23을 통해) 아직 색인화에 얼룩을 저장하는 지원하지 않으며, 당신이 그들을 저장하려는 경우 설명 된 오류가 발생합니다 있습니다 직접. 그 동안 FileSystem API를 사용해야합니다.

+0

[티켓] (https://code.google.com/p/chromium/issues/detail?id=108012)을 가리 키기 만하면 [this] (https://groups.google.com/a)도 참조하십시오. /chromium.org/forum/#!msg/chromium-html5/8C-NWF2FajA/emHnikPpm3oJ) – user1460015

6

IndexedDB는 Firefox 및 Chrome에 BLOB를 저장하는 것을 지원합니다. IndexedDB에 이미지를 저장하는 경우 example을 사용할 수 있습니다. 코드는 최신 버전의 Chrome 및 Firefox에서 잘 작동합니다. 도움이 되길 바랍니다.

+1

정말이에요? 10 월 10 일부터 크롬에서 https://code.google.com/p/chromium/issues/detail?id=108012이 누락 된 경우를 제외하고는 IndexedDB에 BLOB를 저장하는 기능을 지원하지 않습니다. 또한 게시 한 예는 여러 가지 이유 때문에 Chrome에서 작동하지 않으며 블로 브 문제 만 1 개입니다. –

+2

그 예가 Chrome에서 작동하도록 업데이트했습니다. 데이터베이스에 쓸 때 blob을 base64 문자열로 변환하고 데이터베이스에서 읽을 때 blob을 반환합니다. https://gist.github.com/tantaman/6921973 –