2015-04-14 6 views
4

У меня проблема с плагином Cordita SQLite.Cordova SQLite save BLOB

Как сохранить изображение BLOB в SQLite?

У меня есть объект BLOB в JS:

Blob:{ 
size: 96874 
type: "image/jpeg" 
__proto__: Blob 
length: 1} 

И я пытался спасти его

INSERT INTO images (img) VALUES (?); 

И когда я пытаюсь получить это изображение:

SELECT img FROM images 

я получаю это строка:

img: "{"type":"image\/jpeg","size":96874}" 

Как я могу преобразовать его в BLOB снова?

Также я пытаюсь сохранить изображения в base64, но я не могу сохранить большие изображения в SQLite, потому что строка base64 очень велика. (Работает с маленькими изображениями)

Пожалуйста, помогите мне и извините за мой английский.

ответ

4

Вы не можете сохранять объекты JavaScript Blob в SQLite Plugin. Он не поддерживает формат Blob. Да, я знаю, что у него есть тип BLOB, но смутно это не одно и то же. :)

Плагин WebSQL/SQLite поддерживает двоичные строки в качестве альтернативы Blobs. Тем не менее, вы можете столкнуться с проблемами, поскольку в реализации как для iOS, так и для Android существует множество ошибок (some details are here).

В PouchDB мы работали над этими проблемами, поэтому API-интерфейс приложения полностью отсылает вам все. Следуйте за PouchDB attachment guide, и он преобразует Blobs для вас и сохранит их в базе данных. Чтобы создать PouchDB, что переговоры с SQLite плагин, вам нужно будет сделать следующее:

/* prefer websql, which will actually use the SQLite Plugin if available */ 
var db = new PouchDB('mydbname', {adapter: 'websql'}); 
if (!db.adapter) { 
    /* fall back to IndexedDB for FirefoxOS, Windows Phone, etc. */ 
    db = new PouchDB('mydbname'); 
} 

Если вы хотите конвертировать между Blobs и двоичных строк или различных других форматов, проверить blob-util.

+0

Указанный db работает на телефоне Windows? – ShrekOverflow

+0

yes http://caniuse.com/#feat=indexeddb – nlawson

+0

По какой-то причине WWAHost не проверяет для IndexedDB: - / – ShrekOverflow

2

Вы можете использовать blob literals и функцию hex для обработки значений blob как шестнадцатеричных строк на интерфейсе между SQL и JavaScript, что отлично работает.

+0

Не могли бы вы объяснить? Когда я получу объект javascript BLOB, что мне делать с ним? Извините за глупые вопросы, но я немного смущен этой проблемой. – ArtemKh

2

, насколько велики ваши изображения? Я создал приложение, которое сохранил изображения в базе данных приложений, см. Это inventory-service. Я использую PouchDB и у клиента base64-service. Вы также можете найти приложение в official stores.

+0

5mb изображения не работают для меня. – ArtemKh

0

Моя рекомендация - просто хранить ваши фотографии в виде плоских файлов с уникальными именами файлов, конечно же, и хранить ссылки в вашей базе данных sqlite.

Смежные вопросы