【问题标题】:How to load a file into a byte array in JavaScript如何在 JavaScript 中将文件加载到字节数组中
【发布时间】:2015-01-28 15:52:59
【问题描述】:

我正在使用cordova 开发一个移动应用程序。应用程序在某些时候需要离线,这意味着它必须在内部数据库中有数据。

数据由一堆字段组成,其中一些是文件的链接。例如:

var restaurant = {
   name: 'Restaurant X'
   address: 'So far'
   logo: http://www.restaurantX.com/logo.png
   image: pics/restaurant-x.jpg
}

当用户决定离线时,我们应该从数据库中提取所有相关信息(这一点被清除)并下载所有相关图像(这是我卡住的地方)。此时我想到了两种选择,第一种是将所有文件作为文件或作为数据库中的数据下载到手机中,但是项目负责人说图像必须以blob形式保存在数据库中。

我一直在寻找一个函数来将文件的内容转换为 byte Array 以将其保存到数据库中,但我需要一个同步函数,因为我必须等待图片才能将行保存到数据库中。

function(tx, row){
    var query = "INSERT INTO Restaurants (name, address, logo, image) values (?,?,?,?)";
    var logo = null; // I need to fill it with the logo
    var picture = null; // I need to fill it with the picture
    tx.executeSql(query, [row["nombre"], row["address"],logo,picture], onSuccess, onError);
});

如果这个问题太基础了,我很抱歉,我几乎是 JavaScript 新手。

【问题讨论】:

  • but I need it syncronous because I need to save the value into the database 听起来像是 XY 问题:mywiki.wooledge.org/XyProblem
  • 异步和同步有什么关系?向我们展示您的尝试,也许我们可以为您指明正确的方向。
  • @A.Wolff 我明白你的意思。我会尝试更具体地解决我的问题。

标签: javascript jquery cordova jquery-mobile


【解决方案1】:

如果您的图像序列化例程是异步的并且您希望将其存储在序列化成功时,那么您绝对应该查看 Promise。有关承诺的更多详细信息,您可以查看here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 2020-02-24
    • 2014-07-08
    • 2022-12-15
    • 1970-01-01
    • 2015-03-12
    相关资源
    最近更新 更多