我有一个 cordova SQLite插件的问题。
如何将BLOB图像保存到SQLite?
我在JS中有BLOB对象:
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字符串是非常巨大的.(它的作品与小图像)
请帮帮我,对不起我的英语。
5条答案
按热度按时间zhte4eai1#
您不能将JavaScript Blob对象保存到SQLite插件。它不支持Blob格式。是的,我知道它有一个
BLOB
类型,但令人困惑的是,它不是一回事。:)WebSQL/SQLite插件确实支持二进制字符串作为Blob的替代。但是,您可能会遇到问题,因为在iOS和Android(some details are here)上的实现中存在大量错误。
在PouchDB中,我们解决了这些问题,因此附件API为您提取了所有内容。遵循PouchDB attachment guide,它将为您转换Blob并将其存储在数据库中。要创建一个与SQLite插件对话的PouchDB,您需要执行以下操作:
如果您想在Blob和二进制字符串或各种其他格式之间进行转换,请查看blob-util。
qlvxas9a2#
您可以使用blob文字和hex函数,在SQL和JavaScript之间的接口上将blob值视为十六进制字符串,这样就可以正常工作。
ggazkfy83#
你的图片有多大?我已经建立了一个应用程序,它将图片保存到应用程序数据库中,请参阅此库存服务。我使用了PouchDB和一个客户base64-service。你也可以在official stores中找到该应用程序。
kpbpu0084#
我的建议是简单地将图片存储为平面文件,当然要有唯一的文件名,并将 references 存储在sqlite数据库中。
kiayqfof5#
你不能保存二进制图像到本地sqlite,但一个解决方案存在,如果你使用相机或画廊上传图像:
您可以将
FILE_URI
保存在本地sqlite中,当您想上传到服务器时,请转换为BINARY_FILE
并上传到服务器