好的,我正在通过xhr下载数据块,并希望将其本地存储为chrome扩展程序。
起初,我能够将其存储在localStorage
中,但后来我需要处理更大的数据块,而localStorage
无法处理。因此,我决定将其存储在Web Sql Database中。然而,我能够将数据以与下载时完全相同的方式存储在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 Database,那么为什么我不能像使用localStorage
那样轻松地将数据放入后者呢?