我使用查询字符串从浏览器 URL 获取服务器上 sqlite 数据库文件的 URL。
所以在应用程序中我有文件网址。
然后我在该 url 上调用一个 Angular $http.get 函数。
这为我提供了文件中的数据,但我用来读取数据的库需要一个文件对象。
有没有办法从 $http.get 中的参数创建文件对象?参数是数据、状态、标题和配置,我还有文件名。
我尝试构建一个 blob,但一直收到错误消息“数据库磁盘镜像格式错误”。这是 $http.get 函数内部的 blob 构造:
...
var blob = [];
var blob2 = {fileName:null};
$http.get(fileName).
success(function (data, status, headers, config) {
blob[0] = data;
var theBlob = new Blob(blob, {name:fileName},{status:status},{headers:headers},{config:config}, {type : ''});
var r = new FileReader();
r.onload = function () {
var Uints = new Uint8Array(r.result);
db = new SQL.Database(Uints);
...
我还尝试通过添加 $http.get 数据、状态、 header 和配置部分作为 blob[] 数组的更多部分来构建 blob,并将其传递给新的 Blob 构造函数...
任何帮助将不胜感激,谢谢!
最佳答案
我最终使用了一个按钮并将来自 url 事件的负载分配给它,这样我就不必构建自己的 blob。当我构建自己的 blob 时,sql.js 无法解析我的 sqlite 数据库文件。似乎 header 丢失了,但我无法以 sql.js 正确读取的方式添加它们。
使用修改后的用例,从 url 加载按钮选项工作正常。我什至隐藏了按钮,除非有从 url 中的查询字符串返回的数据。这意味着仅当 url 中包含查询字符串时才会显示从 url 加载的按钮。
关于javascript - 使用 javascript、angular.js 和 sql.js,如何从 url 获取文件对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25167283/