2016-04-07 5 views
0

キャプチャした画像をデータベースに保存しようとしていますが、画像の実際のデータを取得できないようです。キャプチャした画像をデータベースに挿入する問題(Cordova/SQlite/JavaScript)

カメラが写真を撮ると自動的に保存されますが、クエリアラートが表示され、画像が未定義であることが示されます。

私のコーディングにはいくつかの問題があると確信しています。私のコーディングは最良ではないからです。

alert(_Query3);

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); 
} 
+0

ここで、base64imageDataの宣言はどこですか?またはクエリーでimageDataを渡して、どのアラートが表示されているかを確認してください。 – IamKarim1992

+0

私はちょうどいくつかを試した、imageDataは定義されていないので、私はそこにデータがないと仮定?私はさらに結果を見るためにimage.srcを入れました。そしてそれは 'data:image/jpeg; base64、undefined'を思いついたので、明らかにimageDataはデータを取得していません。 – Mahdi

+0

@Mahdi:CordovaベースのアプリケーションでSQLiteにイメージバイナリデータを格納するソリューションを見つけましたか? – Mrunal

答えて

0

私はあなたの問題への解決策を見つけたかもしれない私に次のようになります。 onSuccessコールバックの構文が間違っているようです。私が知る限り、onSuccessに使用できるパラメータは1つだけなので、 "tx"変数をimageData変数と一緒に使用する方法はわかりません。私の前提が正しければ、イメージデータのBase64エンコーディングをtxパラメータに格納する必要があります。

問題を解決できた場合はお知らせください。

適切な宣言については、camera.onSuccessを参照してください。

関連する問題