好的,所以我正在通过 xhr 下载数据块,并且我想将其存储在本地以用于 chrome 扩展。
起初我能够将它存储在 中localStorage
,但后来我需要转移到 localStorage 无法处理的更大块。所以我决定将它存储在Web Sql 数据库中。但是,我能够localStorage
完全按照下载的方式存储数据,但是当我尝试将其存储在数据库中时,数据会丢失或出现错误。
像这样:
//this way the data gets lost because it is filtered to prevent SQL injection attacks
tx.executeSql('INSERT INTO files (id, content) VALUES (?,?)', [fileID,file]);
//this method gives an error (unrecognized token) because the data contains byte values in the string
tx.executeSql('INSERT INTO files (id, content) VALUES (?, "' + file + '")', [id]);
我能想到的将数据输入数据库的唯一另一种方法是使用btoa(file)
,它可以工作,但我认为如果每次存储/使用数据时都必须执行btoa
/ ,性能将受到相当大的影响atob
.
所以我的问题是,你如何在不使用的情况下将数据存储在数据库中btoa
,或者如果这不可能,btoa
使用多少性能?
我也相当确定它localStorage
使用 SQLite 以及 Web Sql 数据库,那么为什么我不能尽可能轻松地将数据放入后者localStorage
呢?