Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将捕获的图像插入数据库问题(Cordova/SQlite/JavaScript)_Javascript_Android_Sqlite_Cordova - Fatal编程技术网

将捕获的图像插入数据库问题(Cordova/SQlite/JavaScript)

将捕获的图像插入数据库问题(Cordova/SQlite/JavaScript),javascript,android,sqlite,cordova,Javascript,Android,Sqlite,Cordova,我试图将捕获的图像存储到我的数据库中,但是我似乎无法获得图像的实际数据 一旦相机拍摄了一张照片,它应该自动存储,但是我有查询警报,它显示为未定义的图像 我确信我的编码有一些问题,因为我的编码不是最好的 警报(查询3);给我以下信息: INSERT INTO Gallery(myImage) values ('undefined') JavaScript: document.addEventListener("deviceready", onDeviceReady, false);

我试图将捕获的图像存储到我的数据库中,但是我似乎无法获得图像的实际数据

一旦相机拍摄了一张照片,它应该自动存储,但是我有查询警报,它显示为未定义的图像

我确信我的编码有一些问题,因为我的编码不是最好的

警报(查询3);给我以下信息:

INSERT INTO Gallery(myImage) values ('undefined')
JavaScript:

   document.addEventListener("deviceready", onDeviceReady, false);
          var db;
          function onDeviceReady() {
            db = window.openDatabase("SoccerEarth", "2.0", "SoccerEarthDB", 2 * 1024 * 1024);
            db.transaction(function(tx) {
           tx.executeSql('CREATE TABLE IF NOT EXISTS Gallery (id INTEGER PRIMARY KEY, myImage BLOB)');
            }, errorE, successS);
          }

function successS() {
  alert("Camera database ready!");
  document.getElementById("btnCamera").onclick = function() {
    navigator.camera.getPicture(onSuccess, onFail, {
      quality: 50,
      destinationType: Camera.DestinationType.DATA_URL
    });
  };
}

function onSuccess(tx, imageData) {
alert("Camera test 1");
  var image = document.getElementById("lastPhoto");
  image.src = "data:image/jpeg;base64," + imageData;
  base64imageData = imageData;
  var _Query3 = ("INSERT INTO Gallery(myImage) values ('"+ base64imageData +"')");
  alert(_Query3);
  tx.executeSql(_Query3);
}
            /*   function successCamera() {
               navigator.notification.alert("Image has been stored", null, "Information", "ok");
                 $( ":mobile-pagecontainer" ).pagecontainer( "change", "#page4" );
             } */

function onFail(message) {
  alert('Failed because: ' + message);
}

function errorE(err) {
  alert("Error processing SQL: " + err.code);
}

我可能已经找到了解决你问题的办法。您的onSuccess回调似乎语法错误。我不明白“tx”变量如何与imageData变量一起使用,因为据我所知,onSuccess只能使用一个参数。如果我的假设是正确的,那么图像数据的Base64编码必须存储在tx参数中

让我知道这是否解决了您的问题


有关正确的声明,请参阅。

base64imageData的声明在哪里?或者只是在查询中传递imageData并检查警报显示的内容。我刚刚尝试了一些方法,imageData未定义,所以我假设那里没有数据?我甚至把image.src放在上面只是为了看结果,结果是“data:image/jpeg;base64,未定义“很明显imageData没有提取任何数据。@Mahdi:您在基于Cordova的应用程序中找到将图像二进制数据存储到SQLite的解决方案了吗?